diff --git a/Source/Krypton Toolkit/Examples/Examples.csproj b/Source/Krypton Toolkit/Examples/Examples.csproj index 3e3e276be..2874309c6 100644 --- a/Source/Krypton Toolkit/Examples/Examples.csproj +++ b/Source/Krypton Toolkit/Examples/Examples.csproj @@ -51,8 +51,8 @@ - - + + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView 2022.csproj index 9e7fc359a..6f47444c7 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView/Krypton.Toolkit.Suite.Extended.AdvancedDataGridView 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Buttons/Krypton.Toolkit.Suite.Extended.Buttons 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Buttons/Krypton.Toolkit.Suite.Extended.Buttons 2022.csproj index ebf0d2a96..aaf2d717b 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Buttons/Krypton.Toolkit.Suite.Extended.Buttons 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Buttons/Krypton.Toolkit.Suite.Extended.Buttons 2022.csproj @@ -85,7 +85,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Calendar/Krypton.Toolkit.Suite.Extended.Calendar 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Calendar/Krypton.Toolkit.Suite.Extended.Calendar 2022.csproj index f3a9312a9..8bfdaeb17 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Calendar/Krypton.Toolkit.Suite.Extended.Calendar 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Calendar/Krypton.Toolkit.Suite.Extended.Calendar 2022.csproj @@ -85,7 +85,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.Designer.cs index 6452cb309..021371692 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.Designer.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.Designer.cs @@ -38,6 +38,7 @@ private void InitializeComponent() this.kryptonWrapLabel1 = new Krypton.Toolkit.KryptonWrapLabel(); this.kryptonWrapLabel2 = new Krypton.Toolkit.KryptonWrapLabel(); this.ktxtFilePath = new Krypton.Toolkit.KryptonTextBox(); + this.bsaReset = new Krypton.Toolkit.ButtonSpecAny(); this.bsaBrowse = new Krypton.Toolkit.ButtonSpecAny(); this.kcmbHashType = new Krypton.Toolkit.KryptonComboBox(); this.kbtnCalculate = new Krypton.Toolkit.KryptonButton(); @@ -45,15 +46,13 @@ private void InitializeComponent() this.kwlHashOutput = new Krypton.Toolkit.KryptonWrapLabel(); this.ss = new System.Windows.Forms.StatusStrip(); this.tslStatus = new System.Windows.Forms.ToolStripStatusLabel(); - this.tspbCalculationProgress = new System.Windows.Forms.ToolStripProgressBar(); - this.tslCalculationProgress = new System.Windows.Forms.ToolStripStatusLabel(); this.bgwMD5 = new System.ComponentModel.BackgroundWorker(); this.bgwSHA1 = new System.ComponentModel.BackgroundWorker(); this.bgwSHA256 = new System.ComponentModel.BackgroundWorker(); this.bgwSHA384 = new System.ComponentModel.BackgroundWorker(); this.bgwSHA512 = new System.ComponentModel.BackgroundWorker(); this.bgwRIPEMD160 = new System.ComponentModel.BackgroundWorker(); - this.bsaReset = new Krypton.Toolkit.ButtonSpecAny(); + this.kpbtsiCalculationProgress = new Krypton.Toolkit.KryptonProgressBarToolStripItem(); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); this.kryptonPanel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); @@ -74,7 +73,7 @@ private void InitializeComponent() this.kryptonPanel1.Controls.Add(this.kchkToggleCasing); this.kryptonPanel1.Controls.Add(this.kryptonBorderEdge1); this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 212); + this.kryptonPanel1.Location = new System.Drawing.Point(0, 210); this.kryptonPanel1.Name = "kryptonPanel1"; this.kryptonPanel1.PanelBackStyle = Krypton.Toolkit.PaletteBackStyle.PanelAlternate; this.kryptonPanel1.Size = new System.Drawing.Size(709, 50); @@ -123,7 +122,7 @@ private void InitializeComponent() this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; this.kryptonPanel2.Location = new System.Drawing.Point(0, 0); this.kryptonPanel2.Name = "kryptonPanel2"; - this.kryptonPanel2.Size = new System.Drawing.Size(709, 212); + this.kryptonPanel2.Size = new System.Drawing.Size(709, 210); this.kryptonPanel2.TabIndex = 2; // // tableLayoutPanel1 @@ -146,7 +145,7 @@ private void InitializeComponent() this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(709, 212); + this.tableLayoutPanel1.Size = new System.Drawing.Size(709, 210); this.tableLayoutPanel1.TabIndex = 1; // // kryptonWrapLabel1 @@ -179,9 +178,8 @@ private void InitializeComponent() // this.ktxtFilePath.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.ktxtFilePath.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.FileSystem; - this.ktxtFilePath.ButtonSpecs.AddRange(new Krypton.Toolkit.ButtonSpecAny[] { - this.bsaReset, - this.bsaBrowse}); + this.ktxtFilePath.ButtonSpecs.Add(this.bsaReset); + this.ktxtFilePath.ButtonSpecs.Add(this.bsaBrowse); this.tableLayoutPanel1.SetColumnSpan(this.ktxtFilePath, 2); this.ktxtFilePath.Dock = System.Windows.Forms.DockStyle.Fill; this.ktxtFilePath.Location = new System.Drawing.Point(109, 3); @@ -189,11 +187,15 @@ private void InitializeComponent() this.ktxtFilePath.Size = new System.Drawing.Size(597, 23); this.ktxtFilePath.TabIndex = 2; // + // bsaReset + // + this.bsaReset.Type = Krypton.Toolkit.PaletteButtonSpecStyle.Undo; + this.bsaReset.UniqueName = "f7abb2bddee245e9b00ebbe01ac8b5f2"; + this.bsaReset.Click += new System.EventHandler(this.bsaReset_Click); + // // bsaBrowse // this.bsaBrowse.Image = global::Krypton.Toolkit.Suite.Extended.CheckSum.Tools.Properties.Resources.Open; - this.bsaBrowse.Style = Krypton.Toolkit.PaletteButtonStyle.Inherit; - this.bsaBrowse.ToolTipStyle = Krypton.Toolkit.LabelStyle.ToolTip; this.bsaBrowse.Type = Krypton.Toolkit.PaletteButtonSpecStyle.Open; this.bsaBrowse.UniqueName = "2efda73a4eff4dea8684b6fe1ad4324f"; this.bsaBrowse.Click += new System.EventHandler(this.bsaBrowse_Click); @@ -221,18 +223,15 @@ private void InitializeComponent() // // kryptonGroupBox1 // - this.kryptonGroupBox1.CaptionStyle = Krypton.Toolkit.LabelStyle.GroupBoxCaption; this.tableLayoutPanel1.SetColumnSpan(this.kryptonGroupBox1, 3); this.kryptonGroupBox1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonGroupBox1.GroupBackStyle = Krypton.Toolkit.PaletteBackStyle.ControlGroupBox; - this.kryptonGroupBox1.GroupBorderStyle = Krypton.Toolkit.PaletteBorderStyle.ControlGroupBox; this.kryptonGroupBox1.Location = new System.Drawing.Point(3, 64); this.kryptonGroupBox1.Name = "kryptonGroupBox1"; // // kryptonGroupBox1.Panel // this.kryptonGroupBox1.Panel.Controls.Add(this.kwlHashOutput); - this.kryptonGroupBox1.Size = new System.Drawing.Size(703, 145); + this.kryptonGroupBox1.Size = new System.Drawing.Size(703, 143); this.kryptonGroupBox1.TabIndex = 5; this.kryptonGroupBox1.Values.Heading = "CheckSum Output"; // @@ -245,7 +244,7 @@ private void InitializeComponent() this.kwlHashOutput.LabelStyle = Krypton.Toolkit.LabelStyle.TitlePanel; this.kwlHashOutput.Location = new System.Drawing.Point(0, 0); this.kwlHashOutput.Name = "kwlHashOutput"; - this.kwlHashOutput.Size = new System.Drawing.Size(699, 121); + this.kwlHashOutput.Size = new System.Drawing.Size(699, 119); this.kwlHashOutput.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // ss @@ -253,34 +252,22 @@ private void InitializeComponent() this.ss.Font = new System.Drawing.Font("Segoe UI", 9F); this.ss.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tslStatus, - this.tslCalculationProgress, - this.tspbCalculationProgress}); - this.ss.Location = new System.Drawing.Point(0, 262); + this.kpbtsiCalculationProgress}); + this.ss.Location = new System.Drawing.Point(0, 260); this.ss.Name = "ss"; this.ss.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode; - this.ss.Size = new System.Drawing.Size(709, 22); + this.ss.Size = new System.Drawing.Size(709, 24); this.ss.TabIndex = 3; this.ss.Text = "statusStrip1"; // // tslStatus // this.tslStatus.Name = "tslStatus"; - this.tslStatus.Size = new System.Drawing.Size(694, 17); + this.tslStatus.Size = new System.Drawing.Size(563, 19); this.tslStatus.Spring = true; this.tslStatus.Text = "Ready"; this.tslStatus.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // - // tspbCalculationProgress - // - this.tspbCalculationProgress.Name = "tspbCalculationProgress"; - this.tspbCalculationProgress.Size = new System.Drawing.Size(100, 16); - this.tspbCalculationProgress.Visible = false; - // - // tslCalculationProgress - // - this.tslCalculationProgress.Name = "tslCalculationProgress"; - this.tslCalculationProgress.Size = new System.Drawing.Size(0, 17); - // // bgwMD5 // this.bgwMD5.WorkerReportsProgress = true; @@ -329,13 +316,16 @@ private void InitializeComponent() this.bgwRIPEMD160.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.Calculation_ProgressChanged); this.bgwRIPEMD160.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.Calculation_RunWorkerCompleted); // - // bsaReset + // kpbtsiCalculationProgress // - this.bsaReset.Style = Krypton.Toolkit.PaletteButtonStyle.Inherit; - this.bsaReset.ToolTipStyle = Krypton.Toolkit.LabelStyle.ToolTip; - this.bsaReset.Type = Krypton.Toolkit.PaletteButtonSpecStyle.Undo; - this.bsaReset.UniqueName = "f7abb2bddee245e9b00ebbe01ac8b5f2"; - this.bsaReset.Click += new System.EventHandler(this.bsaReset_Click); + this.kpbtsiCalculationProgress.Name = "kpbtsiCalculationProgress"; + this.kpbtsiCalculationProgress.StateCommon.Back.Color1 = System.Drawing.Color.Green; + this.kpbtsiCalculationProgress.StateDisabled.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; + this.kpbtsiCalculationProgress.StateNormal.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; + this.kpbtsiCalculationProgress.Text = "0%"; + this.kpbtsiCalculationProgress.UseValueAsText = true; + this.kpbtsiCalculationProgress.Values.Text = "0%"; + this.kpbtsiCalculationProgress.Visible = false; // // KryptonComputeFileCheckSum // @@ -351,9 +341,6 @@ private void InitializeComponent() this.Name = "KryptonComputeFileCheckSum"; this.Text = "KryptonComputeFileCheckSum"; this.Load += new System.EventHandler(this.KryptonComputeFileCheckSum_Load); - this.Controls.SetChildIndex(this.ss, 0); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - this.Controls.SetChildIndex(this.kryptonPanel2, 0); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); this.kryptonPanel1.ResumeLayout(false); this.kryptonPanel1.PerformLayout(); @@ -391,8 +378,6 @@ private void InitializeComponent() private ButtonSpecAny bsaBrowse; private StatusStrip ss; private ToolStripStatusLabel tslStatus; - private ToolStripProgressBar tspbCalculationProgress; - private ToolStripStatusLabel tslCalculationProgress; private BackgroundWorker bgwMD5; private BackgroundWorker bgwSHA1; private BackgroundWorker bgwSHA256; @@ -400,5 +385,6 @@ private void InitializeComponent() private BackgroundWorker bgwSHA512; private BackgroundWorker bgwRIPEMD160; private ButtonSpecAny bsaReset; + private KryptonProgressBarToolStripItem kpbtsiCalculationProgress; } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.cs index 4612ac78d..a9b7f205b 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonComputeFileCheckSum.cs @@ -583,11 +583,9 @@ private void Calculation_ProgressChanged(object sender, ProgressChangedEventArgs TaskbarManager.Instance.SetProgressValue(e.ProgressPercentage, null); } - tspbCalculationProgress.Visible = true; + kpbtsiCalculationProgress.Visible = true; - tspbCalculationProgress.Value = e.ProgressPercentage; - - tslCalculationProgress.Text = $@"{e.ProgressPercentage}%"; + kpbtsiCalculationProgress.Value = e.ProgressPercentage; kwlHashOutput.Text = @"Please wait ..."; @@ -603,11 +601,9 @@ private void Calculation_RunWorkerCompleted(object sender, RunWorkerCompletedEve TaskbarManager.Instance.SetProgressValue(0, null); } - tspbCalculationProgress.Visible = false; - - tspbCalculationProgress.Value = 0; + kpbtsiCalculationProgress.Visible = false; - tslCalculationProgress.Text = string.Empty; + kpbtsiCalculationProgress.Value = 0; kwlHashOutput.Text = $@"{e.Result}"; diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonVerifyFileCheckSum.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonVerifyFileCheckSum.Designer.cs index c884c8539..0aeae46e5 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonVerifyFileCheckSum.Designer.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Controls Visuals/KryptonVerifyFileCheckSum.Designer.cs @@ -30,8 +30,6 @@ private void InitializeComponent() { this.ss = new System.Windows.Forms.StatusStrip(); this.tslStatus = new System.Windows.Forms.ToolStripStatusLabel(); - this.tspbCalculationProgress = new System.Windows.Forms.ToolStripProgressBar(); - this.tslCalculationProgress = new System.Windows.Forms.ToolStripStatusLabel(); this.bgwMD5 = new System.ComponentModel.BackgroundWorker(); this.bgwSHA1 = new System.ComponentModel.BackgroundWorker(); this.bgwSHA256 = new System.ComponentModel.BackgroundWorker(); @@ -70,6 +68,7 @@ private void InitializeComponent() this.kryptonContextMenuItem4 = new Krypton.Toolkit.KryptonContextMenuItem(); this.kcmdLoad = new Krypton.Toolkit.KryptonCommand(); this.kbtnCalculate = new Krypton.Toolkit.KryptonButton(); + this.kpbtsiCalculationProgress = new Krypton.Toolkit.KryptonProgressBarToolStripItem(); this.ss.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); this.kryptonPanel1.SuspendLayout(); @@ -92,8 +91,7 @@ private void InitializeComponent() this.ss.Font = new System.Drawing.Font("Segoe UI", 9F); this.ss.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tslStatus, - this.tspbCalculationProgress, - this.tslCalculationProgress}); + this.kpbtsiCalculationProgress}); this.ss.Location = new System.Drawing.Point(0, 307); this.ss.Name = "ss"; this.ss.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode; @@ -109,17 +107,6 @@ private void InitializeComponent() this.tslStatus.Text = "Ready"; this.tslStatus.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // - // tspbCalculationProgress - // - this.tspbCalculationProgress.Name = "tspbCalculationProgress"; - this.tspbCalculationProgress.Size = new System.Drawing.Size(100, 16); - this.tspbCalculationProgress.Visible = false; - // - // tslCalculationProgress - // - this.tslCalculationProgress.Name = "tslCalculationProgress"; - this.tslCalculationProgress.Size = new System.Drawing.Size(0, 17); - // // bgwMD5 // this.bgwMD5.WorkerReportsProgress = true; @@ -255,9 +242,8 @@ private void InitializeComponent() // // ktxtFilePath // - this.ktxtFilePath.ButtonSpecs.AddRange(new Krypton.Toolkit.ButtonSpecAny[] { - this.bsaReset, - this.bsaBrowse}); + this.ktxtFilePath.ButtonSpecs.Add(this.bsaReset); + this.ktxtFilePath.ButtonSpecs.Add(this.bsaBrowse); this.tableLayoutPanel1.SetColumnSpan(this.ktxtFilePath, 2); this.ktxtFilePath.Dock = System.Windows.Forms.DockStyle.Fill; this.ktxtFilePath.Location = new System.Drawing.Point(109, 3); @@ -268,15 +254,12 @@ private void InitializeComponent() // // bsaReset // - this.bsaReset.Style = Krypton.Toolkit.PaletteButtonStyle.Inherit; - this.bsaReset.ToolTipStyle = Krypton.Toolkit.LabelStyle.ToolTip; this.bsaReset.Type = Krypton.Toolkit.PaletteButtonSpecStyle.Undo; this.bsaReset.UniqueName = "d153dbd03a8c4bedaca0d851db1492dc"; this.bsaReset.Click += new System.EventHandler(this.bsaReset_Click); // // bsaBrowse // - this.bsaBrowse.Style = Krypton.Toolkit.PaletteButtonStyle.Inherit; this.bsaBrowse.ToolTipStyle = Krypton.Toolkit.LabelStyle.SuperTip; this.bsaBrowse.Type = Krypton.Toolkit.PaletteButtonSpecStyle.Open; this.bsaBrowse.UniqueName = "2efda73a4eff4dea8684b6fe1ad4324f"; @@ -295,11 +278,8 @@ private void InitializeComponent() // // kryptonGroupBox1 // - this.kryptonGroupBox1.CaptionStyle = Krypton.Toolkit.LabelStyle.GroupBoxCaption; this.tableLayoutPanel1.SetColumnSpan(this.kryptonGroupBox1, 3); this.kryptonGroupBox1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonGroupBox1.GroupBackStyle = Krypton.Toolkit.PaletteBackStyle.ControlGroupBox; - this.kryptonGroupBox1.GroupBorderStyle = Krypton.Toolkit.PaletteBorderStyle.ControlGroupBox; this.kryptonGroupBox1.Location = new System.Drawing.Point(3, 64); this.kryptonGroupBox1.Name = "kryptonGroupBox1"; // @@ -324,11 +304,8 @@ private void InitializeComponent() // // kryptonGroupBox2 // - this.kryptonGroupBox2.CaptionStyle = Krypton.Toolkit.LabelStyle.GroupBoxCaption; this.tableLayoutPanel1.SetColumnSpan(this.kryptonGroupBox2, 3); this.kryptonGroupBox2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonGroupBox2.GroupBackStyle = Krypton.Toolkit.PaletteBackStyle.ControlGroupBox; - this.kryptonGroupBox2.GroupBorderStyle = Krypton.Toolkit.PaletteBorderStyle.ControlGroupBox; this.kryptonGroupBox2.Location = new System.Drawing.Point(3, 162); this.kryptonGroupBox2.Name = "kryptonGroupBox2"; // @@ -341,9 +318,8 @@ private void InitializeComponent() // // ktxtVarifyCheckSum // - this.ktxtVarifyCheckSum.ButtonSpecs.AddRange(new Krypton.Toolkit.ButtonSpecAny[] { - this.bsaVerifyReset, - this.bsaVerifyBrowse}); + this.ktxtVarifyCheckSum.ButtonSpecs.Add(this.bsaVerifyReset); + this.ktxtVarifyCheckSum.ButtonSpecs.Add(this.bsaVerifyBrowse); this.ktxtVarifyCheckSum.KryptonContextMenu = this.kcmHashVerify; this.ktxtVarifyCheckSum.Location = new System.Drawing.Point(8, 22); this.ktxtVarifyCheckSum.Name = "ktxtVarifyCheckSum"; @@ -353,15 +329,11 @@ private void InitializeComponent() // // bsaVerifyReset // - this.bsaVerifyReset.Style = Krypton.Toolkit.PaletteButtonStyle.Inherit; - this.bsaVerifyReset.ToolTipStyle = Krypton.Toolkit.LabelStyle.ToolTip; this.bsaVerifyReset.Type = Krypton.Toolkit.PaletteButtonSpecStyle.Undo; this.bsaVerifyReset.UniqueName = "b92f7a2ea9f441ffb60df6dc3e1d6d88"; // // bsaVerifyBrowse // - this.bsaVerifyBrowse.Style = Krypton.Toolkit.PaletteButtonStyle.Inherit; - this.bsaVerifyBrowse.ToolTipStyle = Krypton.Toolkit.LabelStyle.ToolTip; this.bsaVerifyBrowse.Type = Krypton.Toolkit.PaletteButtonSpecStyle.Open; this.bsaVerifyBrowse.UniqueName = "2313891785e94e2c8ff9adc2d90ed55b"; this.bsaVerifyBrowse.Click += new System.EventHandler(this.bsaVerifyBrowse_Click); @@ -432,6 +404,17 @@ private void InitializeComponent() this.kbtnCalculate.Values.Text = "&Calculate"; this.kbtnCalculate.Click += new System.EventHandler(this.kbtnCalculate_Click); // + // kpbtsiCalculationProgress + // + this.kpbtsiCalculationProgress.Name = "kpbtsiCalculationProgress"; + this.kpbtsiCalculationProgress.StateCommon.Back.Color1 = System.Drawing.Color.Green; + this.kpbtsiCalculationProgress.StateDisabled.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; + this.kpbtsiCalculationProgress.StateNormal.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; + this.kpbtsiCalculationProgress.Text = "0%"; + this.kpbtsiCalculationProgress.UseValueAsText = true; + this.kpbtsiCalculationProgress.Values.Text = "0%"; + this.kpbtsiCalculationProgress.Visible = false; + // // KryptonVerifyFileCheckSum // this.AcceptButton = this.kbtnVerify; @@ -448,9 +431,6 @@ private void InitializeComponent() this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Verify File CheckSum"; this.Load += new System.EventHandler(this.KryptonVerifyFileCheckSum_Load); - this.Controls.SetChildIndex(this.ss, 0); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - this.Controls.SetChildIndex(this.kryptonPanel2, 0); this.ss.ResumeLayout(false); this.ss.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); @@ -479,8 +459,6 @@ private void InitializeComponent() private StatusStrip ss; private ToolStripStatusLabel tslStatus; - private ToolStripProgressBar tspbCalculationProgress; - private ToolStripStatusLabel tslCalculationProgress; private BackgroundWorker bgwMD5; private BackgroundWorker bgwSHA1; private BackgroundWorker bgwSHA256; @@ -519,5 +497,6 @@ private void InitializeComponent() private ButtonSpecAny bsaReset; private ButtonSpecAny bsaVerifyReset; private KryptonButton kbtnCalculate; + private KryptonProgressBarToolStripItem kpbtsiCalculationProgress; } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Krypton.Toolkit.Suite.Extended.CheckSum.Tools 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Krypton.Toolkit.Suite.Extended.CheckSum.Tools 2022.csproj index 5cfdfd22f..aacc661ea 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Krypton.Toolkit.Suite.Extended.CheckSum.Tools 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.CheckSum.Tools/Krypton.Toolkit.Suite.Extended.CheckSum.Tools 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar 2022.csproj index ae2638caa..6b59aaf35 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar/Krypton.Toolkit.Suite.Extended.Circular.ProgressBar 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.ComboBox/Krypton.Toolkit.Suite.Extended.ComboBox 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.ComboBox/Krypton.Toolkit.Suite.Extended.ComboBox 2022.csproj index 2539a5b3b..39d656623 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.ComboBox/Krypton.Toolkit.Suite.Extended.ComboBox 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.ComboBox/Krypton.Toolkit.Suite.Extended.ComboBox 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Common/Krypton.Toolkit.Suite.Extended.Common 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Common/Krypton.Toolkit.Suite.Extended.Common 2022.csproj index 4ed7ff448..354efeaa4 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Common/Krypton.Toolkit.Suite.Extended.Common 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Common/Krypton.Toolkit.Suite.Extended.Common 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Compression/Krypton.Toolkit.Suite.Extended.Compression 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Compression/Krypton.Toolkit.Suite.Extended.Compression 2022.csproj index 13ee4f836..2d219f2b3 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Compression/Krypton.Toolkit.Suite.Extended.Compression 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Compression/Krypton.Toolkit.Suite.Extended.Compression 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Controls/Krypton.Toolkit.Suite.Extended.Controls 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Controls/Krypton.Toolkit.Suite.Extended.Controls 2022.csproj index 422d2bc7f..55fba615b 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Controls/Krypton.Toolkit.Suite.Extended.Controls 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Controls/Krypton.Toolkit.Suite.Extended.Controls 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Core/Krypton.Toolkit.Suite.Extended.Core 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Core/Krypton.Toolkit.Suite.Extended.Core 2022.csproj index 6ccdbe199..8881b3b3b 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Core/Krypton.Toolkit.Suite.Extended.Core 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Core/Krypton.Toolkit.Suite.Extended.Core 2022.csproj @@ -86,13 +86,13 @@ - + - + - + - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Data.Visualisation/Krypton.Toolkit.Suite.Extended.Data.Visualisation 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Data.Visualisation/Krypton.Toolkit.Suite.Extended.Data.Visualisation 2022.csproj index dee301fca..bc41a3c84 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Data.Visualisation/Krypton.Toolkit.Suite.Extended.Data.Visualisation 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Data.Visualisation/Krypton.Toolkit.Suite.Extended.Data.Visualisation 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.DataGridView/Krypton.Toolkit.Suite.Extended.DataGridView 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.DataGridView/Krypton.Toolkit.Suite.Extended.DataGridView 2022.csproj index 75c237aa6..7b1a91848 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.DataGridView/Krypton.Toolkit.Suite.Extended.DataGridView 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.DataGridView/Krypton.Toolkit.Suite.Extended.DataGridView 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Developer.Utilities/Krypton.Toolkit.Suite.Extended.Developer.Utilities 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Developer.Utilities/Krypton.Toolkit.Suite.Extended.Developer.Utilities 2022.csproj index 26798b5c5..a859b2520 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Developer.Utilities/Krypton.Toolkit.Suite.Extended.Developer.Utilities 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Developer.Utilities/Krypton.Toolkit.Suite.Extended.Developer.Utilities 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dialogs/Krypton.Toolkit.Suite.Extended.Dialogs 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dialogs/Krypton.Toolkit.Suite.Extended.Dialogs 2022.csproj index 25fb05743..964c27649 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dialogs/Krypton.Toolkit.Suite.Extended.Dialogs 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dialogs/Krypton.Toolkit.Suite.Extended.Dialogs 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dock.Extender/Krypton.Toolkit.Suite.Extended.Dock.Extender 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dock.Extender/Krypton.Toolkit.Suite.Extended.Dock.Extender 2022.csproj index 1c4bafd7d..0bb83f9f7 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dock.Extender/Krypton.Toolkit.Suite.Extended.Dock.Extender 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Dock.Extender/Krypton.Toolkit.Suite.Extended.Dock.Extender 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing.Utilities/Krypton.Toolkit.Suite.Extended.Drawing.Utilities 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing.Utilities/Krypton.Toolkit.Suite.Extended.Drawing.Utilities 2022.csproj index 701fbc2ad..c5c7d66cf 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing.Utilities/Krypton.Toolkit.Suite.Extended.Drawing.Utilities 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing.Utilities/Krypton.Toolkit.Suite.Extended.Drawing.Utilities 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing/Krypton.Toolkit.Suite.Extended.Drawing 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing/Krypton.Toolkit.Suite.Extended.Drawing 2022.csproj index 691aa8e53..85bcbcdbe 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing/Krypton.Toolkit.Suite.Extended.Drawing 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Drawing/Krypton.Toolkit.Suite.Extended.Drawing 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Effects/Krypton.Toolkit.Suite.Extended.Effects 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Effects/Krypton.Toolkit.Suite.Extended.Effects 2022.csproj index 8de4ddc70..41820aea0 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Effects/Krypton.Toolkit.Suite.Extended.Effects 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Effects/Krypton.Toolkit.Suite.Extended.Effects 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Error.Reporting/Krypton.Toolkit.Suite.Extended.Error.Reporting 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Error.Reporting/Krypton.Toolkit.Suite.Extended.Error.Reporting 2022.csproj index 178b462c5..98149315c 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Error.Reporting/Krypton.Toolkit.Suite.Extended.Error.Reporting 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Error.Reporting/Krypton.Toolkit.Suite.Extended.Error.Reporting 2022.csproj @@ -87,9 +87,9 @@ - + - + @@ -171,7 +171,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.File.Copier/Krypton.Toolkit.Suite.Extended.File.Copier 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.File.Copier/Krypton.Toolkit.Suite.Extended.File.Copier 2022.csproj index 4b6f97523..132bba3eb 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.File.Copier/Krypton.Toolkit.Suite.Extended.File.Copier 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.File.Copier/Krypton.Toolkit.Suite.Extended.File.Copier 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Floating.Toolbars/Krypton.Toolkit.Suite.Extended.Floating.Toolbars 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Floating.Toolbars/Krypton.Toolkit.Suite.Extended.Floating.Toolbars 2022.csproj index e9ef34d29..84c77dbbd 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Floating.Toolbars/Krypton.Toolkit.Suite.Extended.Floating.Toolbars 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Floating.Toolbars/Krypton.Toolkit.Suite.Extended.Floating.Toolbars 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Forms/Krypton.Toolkit.Suite.Extended.Forms 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Forms/Krypton.Toolkit.Suite.Extended.Forms 2022.csproj index 9a875a166..cd3105b96 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Forms/Krypton.Toolkit.Suite.Extended.Forms 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Forms/Krypton.Toolkit.Suite.Extended.Forms 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Global.Utilities/Krypton.Toolkit.Suite.Extended.Global.Utilities 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Global.Utilities/Krypton.Toolkit.Suite.Extended.Global.Utilities 2022.csproj index 34045f37e..8204c62ca 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Global.Utilities/Krypton.Toolkit.Suite.Extended.Global.Utilities 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Global.Utilities/Krypton.Toolkit.Suite.Extended.Global.Utilities 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.IO/Krypton.Toolkit.Suite.Extended.IO 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.IO/Krypton.Toolkit.Suite.Extended.IO 2022.csproj index 2060220b1..1ef713211 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.IO/Krypton.Toolkit.Suite.Extended.IO 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.IO/Krypton.Toolkit.Suite.Extended.IO 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.InputBox/Krypton.Toolkit.Suite.Extended.InputBox 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.InputBox/Krypton.Toolkit.Suite.Extended.InputBox 2022.csproj index 5dbad0a77..3ec147394 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.InputBox/Krypton.Toolkit.Suite.Extended.InputBox 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.InputBox/Krypton.Toolkit.Suite.Extended.InputBox 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Language.Model/Krypton.Toolkit.Suite.Extended.Language.Model 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Language.Model/Krypton.Toolkit.Suite.Extended.Language.Model 2022.csproj index a8f7bd427..884803d8d 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Language.Model/Krypton.Toolkit.Suite.Extended.Language.Model 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Language.Model/Krypton.Toolkit.Suite.Extended.Language.Model 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Memory.Box/Krypton.Toolkit.Suite.Extended.Memory.Box 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Memory.Box/Krypton.Toolkit.Suite.Extended.Memory.Box 2022.csproj index 49cd37711..2a8c196d8 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Memory.Box/Krypton.Toolkit.Suite.Extended.Memory.Box 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Memory.Box/Krypton.Toolkit.Suite.Extended.Memory.Box 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Classes/CWPRETSTRUCT.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Classes/CWPRETSTRUCT.cs new file mode 100644 index 000000000..1d59d382d --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Classes/CWPRETSTRUCT.cs @@ -0,0 +1,12 @@ +namespace Krypton.Toolkit.Suite.Extended.Messagebox +{ + [StructLayout(LayoutKind.Sequential)] + public struct CWPRETSTRUCT + { + public IntPtr lResult; + public IntPtr lParam; + public IntPtr wParam; + public uint message; + public IntPtr hwnd; + }; +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Classes/PlatformEvents.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Classes/PlatformEvents.cs new file mode 100644 index 000000000..7099ae45f --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Classes/PlatformEvents.cs @@ -0,0 +1,38 @@ +namespace Krypton.Toolkit.Suite.Extended.Messagebox +{ + internal class PlatformEvents + { + [DllImport(Win32Libraries.User32)] + internal static extern bool GetWindowRect(IntPtr hWnd, ref Rectangle lpRect); + + [DllImport(Win32Libraries.User32)] + internal static extern int MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); + + [DllImport(Win32Libraries.User32)] + public static extern UIntPtr SetTimer(IntPtr hWnd, UIntPtr nIDEvent, uint uElapse, PlatformInvoke.TimerProc lpTimerFunc); + + [DllImport(Win32Libraries.User32)] + public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); + + [DllImport(Win32Libraries.User32)] + public static extern IntPtr SetWindowsHookEx(int idHook, PlatformInvoke.HookProc lpfn, IntPtr hInstance, int threadId); + + [DllImport(Win32Libraries.User32)] + public static extern int UnhookWindowsHookEx(IntPtr idHook); + + [DllImport(Win32Libraries.User32)] + public static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, IntPtr wParam, IntPtr lParam); + + [DllImport(Win32Libraries.User32)] + public static extern int GetWindowTextLength(IntPtr hWnd); + + [DllImport(Win32Libraries.User32)] + public static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int maxLength); + + [DllImport(Win32Libraries.User32)] + public static extern int EndDialog(IntPtr hDlg, IntPtr nResult); + + [DllImport(Win32Libraries.User32, SetLastError = true)] + internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName); + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Toolkit/KryptonMessageBoxExtended.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Toolkit/KryptonMessageBoxExtended.cs index ba2347600..8e466ec8f 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Toolkit/KryptonMessageBoxExtended.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Toolkit/KryptonMessageBoxExtended.cs @@ -32,6 +32,17 @@ namespace Krypton.Toolkit.Suite.Extended.Messagebox public static class KryptonMessageBoxExtended { #region Public + + public static DialogResult Show(string messageText, string caption, ExtendedMessageBoxButtons buttons, ExtendedKryptonMessageBoxIcon icon, int? timeOut = 60, DialogResult? timerResult = DialogResult.None) => + ShowCore(null, messageText, caption, buttons, icon, KryptonMessageBoxDefaultButton.Button1, + MessageBoxOptions.DefaultDesktopOnly, null, null, null, + null, null, Color.Empty, + new[] { Color.Empty, Color.Empty, Color.Empty, Color.Empty }, + null, null, null, + null, string.Empty, string.Empty, string.Empty, + string.Empty, string.Empty, null, null, + null, null, null, timeOut, timerResult); + /// Shows a messagebox. /// The text. /// The caption. @@ -40,15 +51,19 @@ public static class KryptonMessageBoxExtended /// The show control copy. /// The application path. To be used in conjunction with type. public static DialogResult Show(string messageText, string caption, ExtendedMessageBoxButtons buttons, - ExtendedKryptonMessageBoxIcon icon, bool? showCtrlCopy = null, string applicationPath = null, - ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = ExtendedKryptonMessageBoxMessageContainerType.Normal, - KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, - ProcessStartInfo? linkLaunchArgument = null - /*bool? openInExplorer*/) + ExtendedKryptonMessageBoxIcon icon, bool? showCtrlCopy = null, string applicationPath = null, + ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = + ExtendedKryptonMessageBoxMessageContainerType.Normal, + KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, + ProcessStartInfo? linkLaunchArgument = null, int? timeOut = 60, + DialogResult? timerResult = DialogResult.None + /*bool? openInExplorer*/) => ShowCore(null, messageText, caption, buttons, icon, KryptonMessageBoxDefaultButton.Button1, 0, - null, showCtrlCopy, null, null, null, Color.Empty, new[] { Color.Empty, Color.Empty, Color.Empty, Color.Empty }, + null, showCtrlCopy, null, null, null, Color.Empty, + new[] { Color.Empty, Color.Empty, Color.Empty, Color.Empty }, null, null, null, null, string.Empty, string.Empty, - string.Empty, string.Empty, applicationPath, messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument); + string.Empty, string.Empty, applicationPath, messageContainerType, linkLabelCommand, linkAreaStart, + linkAreaEnd, linkLaunchArgument, timeOut, timerResult); /// Shows a messagebox. /// The text. @@ -73,7 +88,7 @@ public static class KryptonMessageBoxExtended Image? customImageIcon = null, string? applicationPath = null, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = ExtendedKryptonMessageBoxMessageContainerType.Normal, KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, - ProcessStartInfo? linkLaunchArgument = null + ProcessStartInfo? linkLaunchArgument = null, int? timeOut = 60, DialogResult? timerResult = DialogResult.None /*bool? openInExplorer*/) => ShowCore(null, messageText, caption, buttons, icon, defaultButton, options, @@ -82,7 +97,7 @@ public static class KryptonMessageBoxExtended new[] { Color.Empty, Color.Empty, Color.Empty, Color.Empty }, null, null, null, null, string.Empty, string.Empty, string.Empty, string.Empty, applicationPath, - messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument); + messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument, timeOut, timerResult); /// Shows a messagebox. /// The text. @@ -103,7 +118,7 @@ public static class KryptonMessageBoxExtended bool? showCtrlCopy = null, string? applicationPath = null, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = ExtendedKryptonMessageBoxMessageContainerType.Normal, KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, - ProcessStartInfo? linkLaunchArgument = null + ProcessStartInfo? linkLaunchArgument = null, int? timeOut = 60, DialogResult? timerResult = DialogResult.None /*bool? openInExplorer*/) => ShowCore(null, messageText, caption, buttons, icon, defaultButton, options, @@ -112,7 +127,8 @@ public static class KryptonMessageBoxExtended new[] { Color.Empty, Color.Empty, Color.Empty, Color.Empty }, null, null, null, null, string.Empty, string.Empty, string.Empty, string.Empty, applicationPath, - messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument); + messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument, + timeOut, timerResult); /// Shows a messagebox. /// The owner. @@ -138,7 +154,7 @@ public static class KryptonMessageBoxExtended Image customImageIcon = null, string applicationPath = null, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = ExtendedKryptonMessageBoxMessageContainerType.Normal, KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, - ProcessStartInfo? linkLaunchArgument = null + ProcessStartInfo? linkLaunchArgument = null, int? timeOut = 60, DialogResult? timerResult = DialogResult.None /*bool? openInExplorer*/) => ShowCore(owner, messageText, caption, buttons, icon, defaultButton, options, @@ -147,7 +163,7 @@ public static class KryptonMessageBoxExtended new[] { Color.Empty, Color.Empty, Color.Empty, Color.Empty }, null, null, null, null, string.Empty, string.Empty, string.Empty, string.Empty, - applicationPath, messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument); + applicationPath, messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument, timeOut, timerResult); /// Shows a messagebox. /// The owner. @@ -170,7 +186,7 @@ public static class KryptonMessageBoxExtended string applicationPath = null, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = ExtendedKryptonMessageBoxMessageContainerType.Normal, KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, - ProcessStartInfo? linkLaunchArgument = null + ProcessStartInfo? linkLaunchArgument = null, int? timeOut = 60, DialogResult? timerResult = DialogResult.None /*bool? openInExplorer*/) => ShowCore(owner, messageText, caption, buttons, icon, defaultButton, options, @@ -181,7 +197,8 @@ public static class KryptonMessageBoxExtended null, string.Empty, string.Empty, string.Empty, string.Empty, applicationPath, - messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument); + messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument, + timeOut, timerResult); /// Shows a messagebox. /// The text. @@ -211,7 +228,7 @@ public static class KryptonMessageBoxExtended string applicationPath = null, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = ExtendedKryptonMessageBoxMessageContainerType.Normal, KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, - ProcessStartInfo? linkLaunchArgument = null + ProcessStartInfo? linkLaunchArgument = null, int? timeOut = 60, DialogResult? timerResult = DialogResult.None /*bool? openInExplorer*/) => ShowCore(null, messageText, caption, buttons, icon, defaultButton, options, @@ -221,7 +238,8 @@ public static class KryptonMessageBoxExtended null, null, null, null, string.Empty, string.Empty, string.Empty, string.Empty, applicationPath, - messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument); + messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument, + timeOut, timerResult); /// Shows a message box. /// The owner. @@ -276,7 +294,7 @@ public static class KryptonMessageBoxExtended string? applicationPath = null, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType = ExtendedKryptonMessageBoxMessageContainerType.Normal, KryptonCommand? linkLabelCommand = null, int? linkAreaStart = 0, int? linkAreaEnd = null, - ProcessStartInfo? linkLaunchArgument = null + ProcessStartInfo? linkLaunchArgument = null, int? timeOut = 60, DialogResult? timerResult = DialogResult.None /*bool? openInExplorer*/) => ShowCore(owner, messageText, caption, buttons, icon, defaultButton, options, @@ -286,7 +304,8 @@ public static class KryptonMessageBoxExtended buttonTwoCustomDialogResult, buttonThreeCustomDialogResult, buttonFourDialogResult, buttonOneCustomText, buttonTwoCustomText, buttonThreeCustomText, buttonFourCustomText, applicationPath, - messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument); + messageContainerType, linkLabelCommand, linkAreaStart, linkAreaEnd, linkLaunchArgument, + timeOut, timerResult); #endregion #region Implementation @@ -326,9 +345,9 @@ public static class KryptonMessageBoxExtended ExtendedKryptonMessageBoxIcon icon, KryptonMessageBoxDefaultButton defaultButton, MessageBoxOptions options, HelpInfo helpInfo, - bool? showCtrlCopy, Font messageBoxTypeface, - Image customImageIcon, bool? showHelpButton, - Color? messageTextColour, Color[] buttonTextColours, + bool? showCtrlCopy, Font? messageBoxTypeface, + Image? customImageIcon, bool? showHelpButton, + Color? messageTextColour, Color[]? buttonTextColours, DialogResult? buttonOneCustomDialogResult, DialogResult? buttonTwoCustomDialogResult, DialogResult? buttonThreeCustomDialogResult, @@ -338,7 +357,9 @@ public static class KryptonMessageBoxExtended string applicationPath, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType, KryptonCommand? linkLabelCommand, int? linkAreaStart, int? linkAreaEnd, - ProcessStartInfo? linkLaunchArgument + ProcessStartInfo? linkLaunchArgument, + int? timeOut, + DialogResult? timerResult /*bool? openInExplorer*/) { IWin32Window showOwner = ValidateOptions(owner, options, helpInfo); @@ -363,7 +384,9 @@ public static class KryptonMessageBoxExtended linkLabelCommand, linkAreaStart, linkAreaEnd, - linkLaunchArgument); + linkLaunchArgument, + timeOut, + timerResult); return kmbe.ShowDialog(showOwner); } diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Visuals/KryptonMessageBoxExtendedForm.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Visuals/KryptonMessageBoxExtendedForm.cs index 6bce36212..a2ccb709f 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Visuals/KryptonMessageBoxExtendedForm.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Controls Visuals/KryptonMessageBoxExtendedForm.cs @@ -27,14 +27,23 @@ // ReSharper disable NotAccessedField.Local +using System.Threading; + +using Timer = System.Threading.Timer; + #pragma warning disable IDE0031 namespace Krypton.Toolkit.Suite.Extended.Messagebox { internal partial class KryptonMessageBoxExtendedForm : KryptonForm { #region Static Fields + private const int GAP = 10; private static readonly int OS_MAJOR_VERSION; + public const int WH_CALLWNDPROCRET = 12; + + private const int WM_CLOSE = 0x0010; + #endregion #region Instance Fields @@ -44,7 +53,7 @@ internal partial class KryptonMessageBoxExtendedForm : KryptonForm private readonly KryptonMessageBoxDefaultButton _defaultButton; private readonly MessageBoxOptions _options; // https://github.com/Krypton-Suite/Standard-Toolkit/issues/313 // If help information provided or we are not a service/default desktop application then grab an owner for showing the message box - private readonly IWin32Window _showOwner; + private static /*readonly*/ IWin32Window _showOwner; private readonly HelpInfo _helpInfo; #endregion @@ -93,10 +102,32 @@ internal partial class KryptonMessageBoxExtendedForm : KryptonForm private readonly ProcessStartInfo? _linkLaunchArgument; + private static PlatformInvoke.HookProc _hookProc; + + private static IntPtr _hHook; + + private Timer _timeOutTimer; + + private int _timeOut; + + private bool _timedOut; + + private DialogResult _result; + + private DialogResult _timerResult; + #endregion #region Identity - static KryptonMessageBoxExtendedForm() => OS_MAJOR_VERSION = Environment.OSVersion.Version.Major; + + static KryptonMessageBoxExtendedForm() + { + OS_MAJOR_VERSION = Environment.OSVersion.Version.Major; + + _hookProc = new PlatformInvoke.HookProc(MessageBoxHookProc); + + _hHook = IntPtr.Zero; + } public KryptonMessageBoxExtendedForm() { @@ -106,7 +137,7 @@ public KryptonMessageBoxExtendedForm() internal KryptonMessageBoxExtendedForm(IWin32Window showOwner, string text, string caption, ExtendedMessageBoxButtons buttons, - ExtendedKryptonMessageBoxIcon kryptonMessageBoxIcon, + ExtendedKryptonMessageBoxIcon icon, KryptonMessageBoxDefaultButton defaultButton, MessageBoxOptions options, HelpInfo helpInfo, bool? showCtrlCopy, @@ -122,14 +153,16 @@ public KryptonMessageBoxExtendedForm() string? applicationPath, ExtendedKryptonMessageBoxMessageContainerType? messageContainerType, KryptonCommand? linkLabelCommand, int? linkAreaStart, int? linkAreaEnd, - ProcessStartInfo? linkLaunchArgument + ProcessStartInfo? linkLaunchArgument, + int? timeOut, + DialogResult? timerResult /*bool? openInExplorer*/) { // Store incoming values _text = text; _caption = caption; _buttons = buttons; - _kryptonMessageBoxIcon = kryptonMessageBoxIcon; + _kryptonMessageBoxIcon = icon; _defaultButton = defaultButton; _options = options; _helpInfo = helpInfo; @@ -155,6 +188,9 @@ public KryptonMessageBoxExtendedForm() _linkAreaStart = linkAreaStart ?? 0; _linkAreaEnd = linkAreaEnd ?? text.Length; _linkLaunchArgument = linkLaunchArgument ?? new(); + _timeOut = timeOut ?? 60; + _timeOutTimer = new Timer(OnTimerElapsed, null, _timeOut, Timeout.Infinite); + _timerResult = timerResult ?? DialogResult.None; //_openInExplorer = openInExplorer ?? false; // Create the form contents @@ -174,6 +210,16 @@ public KryptonMessageBoxExtendedForm() // Finally calculate and set form sizing UpdateSizing(showOwner); + + using (_timeOutTimer) + { + _result = KryptonMessageBoxExtended.Show(text, caption, buttons, icon, null, null); + } + + if (_timedOut) + { + _result = _timerResult; + } } #endregion Identity @@ -812,7 +858,85 @@ private void UpdateContentAreaType(ExtendedKryptonMessageBoxMessageContainerType } } - #endregion + private static void Initialize() + { + if (_hHook != IntPtr.Zero) + { + throw new NotSupportedException("multiple calls are not supported"); + } + + if (_showOwner != null) + { + _hHook = PlatformEvents.SetWindowsHookEx(WH_CALLWNDPROCRET, _hookProc, IntPtr.Zero, AppDomain.GetCurrentThreadId()); + } + } + private static IntPtr MessageBoxHookProc(int nCode, IntPtr wParam, IntPtr lParam) + { + if (nCode < 0) + { + return PlatformEvents.CallNextHookEx(_hHook, nCode, wParam, lParam); + } + + CWPRETSTRUCT msg = (CWPRETSTRUCT)Marshal.PtrToStructure(lParam, typeof(CWPRETSTRUCT)); + IntPtr hook = _hHook; + + if (msg.message == (int)CbtHookAction.HCBT_ACTIVATE) + { + try + { + CenterWindow(msg.hwnd); + } + finally + { + PlatformEvents.UnhookWindowsHookEx(_hHook); + _hHook = IntPtr.Zero; + } + } + + return PlatformEvents.CallNextHookEx(hook, nCode, wParam, lParam); + } + + private static void CenterWindow(IntPtr hChildWnd) + { + Rectangle recChild = new Rectangle(0, 0, 0, 0); + bool success = PlatformEvents.GetWindowRect(hChildWnd, ref recChild); + + int width = recChild.Width - recChild.X; + int height = recChild.Height - recChild.Y; + + Rectangle recParent = new Rectangle(0, 0, 0, 0); + success = PlatformEvents.GetWindowRect(_showOwner.Handle, ref recParent); + + Point ptCenter = new Point(0, 0); + ptCenter.X = recParent.X + ((recParent.Width - recParent.X) / 2); + ptCenter.Y = recParent.Y + ((recParent.Height - recParent.Y) / 2); + + + Point ptStart = new Point(0, 0); + ptStart.X = (ptCenter.X - (width / 2)); + ptStart.Y = (ptCenter.Y - (height / 2)); + + ptStart.X = (ptStart.X < 0) ? 0 : ptStart.X; + ptStart.Y = (ptStart.Y < 0) ? 0 : ptStart.Y; + + int result = PlatformEvents.MoveWindow(hChildWnd, ptStart.X, ptStart.Y, width, + height, false); + } + + private void OnTimerElapsed(object state) + { + IntPtr mbWnd = PlatformEvents.FindWindow("#32770", _caption); // lpClassName is #32770 for MessageBox + if (mbWnd != IntPtr.Zero) + { + PlatformEvents.SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); + } + + _timeOutTimer.Dispose(); + + _timedOut = true; + } + + #endregion } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Enumerations/CbtHookAction.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Enumerations/CbtHookAction.cs new file mode 100644 index 000000000..342789249 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Enumerations/CbtHookAction.cs @@ -0,0 +1,16 @@ +namespace Krypton.Toolkit.Suite.Extended.Messagebox +{ + public enum CbtHookAction + { + HCBT_MOVESIZE = 0, + HCBT_MINMAX = 1, + HCBT_QS = 2, + HCBT_CREATEWND = 3, + HCBT_DESTROYWND = 4, + HCBT_ACTIVATE = 5, + HCBT_CLICKSKIPPED = 6, + HCBT_KEYSKIPPED = 7, + HCBT_SYSCOMMAND = 8, + HCBT_SETFOCUS = 9 + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Globals/GlobalDeclarations.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Globals/GlobalDeclarations.cs index 856be5331..4c84ff009 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Globals/GlobalDeclarations.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Globals/GlobalDeclarations.cs @@ -27,13 +27,13 @@ global using System; global using System.ComponentModel; +global using System.Diagnostics; global using System.Drawing; global using System.Drawing.Design; -global using System.Diagnostics; global using System.Media; global using System.Reflection; +global using System.Runtime.InteropServices; global using System.Text; -global using System.IO; global using System.Windows.Forms; global using Krypton.Toolkit.Suite.Extended.Developer.Utilities; diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Krypton.Toolkit.Suite.Extended.Messagebox 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Krypton.Toolkit.Suite.Extended.Messagebox 2022.csproj index 33d4ff53c..e2e9eef4a 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Krypton.Toolkit.Suite.Extended.Messagebox 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Messagebox/Krypton.Toolkit.Suite.Extended.Messagebox 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navi.Suite/Krypton.Toolkit.Suite.Extended.Navi.Suite 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navi.Suite/Krypton.Toolkit.Suite.Extended.Navi.Suite 2022.csproj index d36e4c891..ab9af3f9a 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navi.Suite/Krypton.Toolkit.Suite.Extended.Navi.Suite 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navi.Suite/Krypton.Toolkit.Suite.Extended.Navi.Suite 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navigator/Krypton.Toolkit.Suite.Extended.Navigator 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navigator/Krypton.Toolkit.Suite.Extended.Navigator 2022.csproj index 9a46962a8..4cfd8e52b 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navigator/Krypton.Toolkit.Suite.Extended.Navigator 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Navigator/Krypton.Toolkit.Suite.Extended.Navigator 2022.csproj @@ -87,9 +87,9 @@ - + - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Networking/Krypton.Toolkit.Suite.Extended.Networking 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Networking/Krypton.Toolkit.Suite.Extended.Networking 2022.csproj index 73f50cb8a..bac5993d8 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Networking/Krypton.Toolkit.Suite.Extended.Networking 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Networking/Krypton.Toolkit.Suite.Extended.Networking 2022.csproj @@ -87,7 +87,7 @@ - + @@ -154,7 +154,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Notifications/Krypton.Toolkit.Suite.Extended.Notifications 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Notifications/Krypton.Toolkit.Suite.Extended.Notifications 2022.csproj index 07cc17b2a..cb94c29dc 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Notifications/Krypton.Toolkit.Suite.Extended.Notifications 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Notifications/Krypton.Toolkit.Suite.Extended.Notifications 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Outlook.Grid/Krypton.Toolkit.Suite.Extended.Outlook.Grid 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Outlook.Grid/Krypton.Toolkit.Suite.Extended.Outlook.Grid 2022.csproj index dfb3a61ed..5407adbd6 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Outlook.Grid/Krypton.Toolkit.Suite.Extended.Outlook.Grid 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Outlook.Grid/Krypton.Toolkit.Suite.Extended.Outlook.Grid 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Panels/Krypton.Toolkit.Suite.Extended.Panels 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Panels/Krypton.Toolkit.Suite.Extended.Panels 2022.csproj index 7b7fb27e1..c80d890e5 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Panels/Krypton.Toolkit.Suite.Extended.Panels 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Panels/Krypton.Toolkit.Suite.Extended.Panels 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Resources/Krypton.Toolkit.Suite.Extended.Resources 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Resources/Krypton.Toolkit.Suite.Extended.Resources 2022.csproj index 8f9d8c964..8c160811d 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Resources/Krypton.Toolkit.Suite.Extended.Resources 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Resources/Krypton.Toolkit.Suite.Extended.Resources 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Ribbon/Krypton.Toolkit.Suite.Extended.Ribbon 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Ribbon/Krypton.Toolkit.Suite.Extended.Ribbon 2022.csproj index 7d98202fa..310422d7e 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Ribbon/Krypton.Toolkit.Suite.Extended.Ribbon 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Ribbon/Krypton.Toolkit.Suite.Extended.Ribbon 2022.csproj @@ -87,9 +87,9 @@ - + - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Settings/Krypton.Toolkit.Suite.Extended.Settings 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Settings/Krypton.Toolkit.Suite.Extended.Settings 2022.csproj index 2b42dd1a5..87c72c952 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Settings/Krypton.Toolkit.Suite.Extended.Settings 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Settings/Krypton.Toolkit.Suite.Extended.Settings 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/General/PlatformInvoke.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/General/PlatformInvoke.cs index a1a6ff7c1..c3c3035cf 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/General/PlatformInvoke.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/General/PlatformInvoke.cs @@ -2995,6 +2995,8 @@ internal static BOOL EndDialog(HandleRef hDlg, IntPtr nResult) public delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam); + public delegate void TimerProc(IntPtr hWnd, uint uMsg, UIntPtr nIDEvent, uint dwTime); + [DllImport(Win32Libraries.User32)] [DefaultDllImportSearchPaths(DllImportSearchPath.System32)] public static extern IntPtr SetWindowsHookEx(WH_ idHook, HookProc lpfn, IntPtr hInstance, int threadId); diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/Krypton.Toolkit.Suite.Extended.Shared 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/Krypton.Toolkit.Suite.Extended.Shared 2022.csproj index a0831481a..1984ee83b 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/Krypton.Toolkit.Suite.Extended.Shared 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Shared/Krypton.Toolkit.Suite.Extended.Shared 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater.Core/Krypton.Toolkit.Suite.Extended.Software.Updater.Core 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater.Core/Krypton.Toolkit.Suite.Extended.Software.Updater.Core 2022.csproj index 176ff5a7c..ae13cc9bd 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater.Core/Krypton.Toolkit.Suite.Extended.Software.Updater.Core 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater.Core/Krypton.Toolkit.Suite.Extended.Software.Updater.Core 2022.csproj @@ -86,13 +86,13 @@ - + - + - + - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Toolkit/MyWebClient.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Toolkit/MyWebClient.cs index 43d942160..39de34c7f 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Toolkit/MyWebClient.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Toolkit/MyWebClient.cs @@ -1,32 +1,4 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// public class MyWebClient : WebClient diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.Designer.cs similarity index 75% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.Designer.cs rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.Designer.cs index 7131e517f..5c737033a 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.Designer.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.Designer.cs @@ -34,7 +34,7 @@ private void InitializeComponent() this.pbxIcon = new System.Windows.Forms.PictureBox(); this.kryptonTableLayoutPanel2 = new Krypton.Toolkit.KryptonTableLayoutPanel(); this.kpbDownloadProgress = new Krypton.Toolkit.KryptonProgressBar(); - this.kwlHeader = new Krypton.Toolkit.KryptonWrapLabel(); + this.kwlInformation = new Krypton.Toolkit.KryptonWrapLabel(); this.kwlSize = new Krypton.Toolkit.KryptonWrapLabel(); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); this.kryptonPanel1.SuspendLayout(); @@ -49,8 +49,8 @@ private void InitializeComponent() this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(487, 106); - this.kryptonPanel1.TabIndex = 1; + this.kryptonPanel1.Size = new System.Drawing.Size(413, 111); + this.kryptonPanel1.TabIndex = 0; // // kryptonTableLayoutPanel1 // @@ -66,20 +66,21 @@ private void InitializeComponent() this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; this.kryptonTableLayoutPanel1.RowCount = 1; this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(487, 106); - this.kryptonTableLayoutPanel1.TabIndex = 0; + this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(413, 111); + this.kryptonTableLayoutPanel1.TabIndex = 1; // // pbxIcon // this.pbxIcon.BackColor = System.Drawing.Color.Transparent; this.pbxIcon.Dock = System.Windows.Forms.DockStyle.Fill; this.pbxIcon.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.download_32; - this.pbxIcon.Location = new System.Drawing.Point(3, 3); + this.pbxIcon.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.pbxIcon.Location = new System.Drawing.Point(4, 4); + this.pbxIcon.Margin = new System.Windows.Forms.Padding(4); this.pbxIcon.Name = "pbxIcon"; - this.pbxIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.pbxIcon.Size = new System.Drawing.Size(64, 100); + this.pbxIcon.Size = new System.Drawing.Size(59, 103); this.pbxIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.pbxIcon.TabIndex = 0; + this.pbxIcon.TabIndex = 1; this.pbxIcon.TabStop = false; // // kryptonTableLayoutPanel2 @@ -88,77 +89,80 @@ private void InitializeComponent() this.kryptonTableLayoutPanel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.kryptonTableLayoutPanel2.ColumnCount = 1; this.kryptonTableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel2.Controls.Add(this.kwlHeader, 0, 0); this.kryptonTableLayoutPanel2.Controls.Add(this.kpbDownloadProgress, 0, 2); + this.kryptonTableLayoutPanel2.Controls.Add(this.kwlInformation, 0, 0); this.kryptonTableLayoutPanel2.Controls.Add(this.kwlSize, 0, 1); this.kryptonTableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel2.Location = new System.Drawing.Point(73, 3); + this.kryptonTableLayoutPanel2.Location = new System.Drawing.Point(70, 3); this.kryptonTableLayoutPanel2.Name = "kryptonTableLayoutPanel2"; this.kryptonTableLayoutPanel2.RowCount = 3; - this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 66.66666F)); - this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); - this.kryptonTableLayoutPanel2.Size = new System.Drawing.Size(411, 100); - this.kryptonTableLayoutPanel2.TabIndex = 1; + this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.kryptonTableLayoutPanel2.Size = new System.Drawing.Size(340, 105); + this.kryptonTableLayoutPanel2.TabIndex = 0; // // kpbDownloadProgress // this.kpbDownloadProgress.Dock = System.Windows.Forms.DockStyle.Fill; - this.kpbDownloadProgress.Location = new System.Drawing.Point(3, 82); + this.kpbDownloadProgress.Location = new System.Drawing.Point(3, 76); this.kpbDownloadProgress.Name = "kpbDownloadProgress"; - this.kpbDownloadProgress.Size = new System.Drawing.Size(405, 15); + this.kpbDownloadProgress.Size = new System.Drawing.Size(334, 26); + this.kpbDownloadProgress.StateCommon.Back.Color1 = System.Drawing.Color.Green; + this.kpbDownloadProgress.StateDisabled.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; + this.kpbDownloadProgress.StateNormal.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; this.kpbDownloadProgress.TabIndex = 0; - // - // kwlHeader - // - this.kwlHeader.AutoSize = false; - this.kwlHeader.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlHeader.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlHeader.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlHeader.Location = new System.Drawing.Point(3, 0); - this.kwlHeader.Name = "kwlHeader"; - this.kwlHeader.Size = new System.Drawing.Size(405, 53); - this.kwlHeader.StateCommon.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlHeader.Text = "kryptonWrapLabel1"; - this.kwlHeader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.kpbDownloadProgress.Text = "0%"; + this.kpbDownloadProgress.UseValueAsText = true; + this.kpbDownloadProgress.Values.Text = "0%"; + // + // kwlInformation + // + this.kwlInformation.AutoSize = false; + this.kwlInformation.Dock = System.Windows.Forms.DockStyle.Fill; + this.kwlInformation.Font = new System.Drawing.Font("Segoe UI", 9F); + this.kwlInformation.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); + this.kwlInformation.LabelStyle = Krypton.Toolkit.LabelStyle.AlternateControl; + this.kwlInformation.Location = new System.Drawing.Point(3, 0); + this.kwlInformation.Name = "kwlInformation"; + this.kwlInformation.Size = new System.Drawing.Size(334, 58); + this.kwlInformation.Text = "Downloading update..."; + this.kwlInformation.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // kwlSize // - this.kwlSize.AutoSize = false; this.kwlSize.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlSize.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kwlSize.Font = new System.Drawing.Font("Segoe UI", 9F); this.kwlSize.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlSize.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlSize.Location = new System.Drawing.Point(3, 53); + this.kwlSize.LabelStyle = Krypton.Toolkit.LabelStyle.AlternateControl; + this.kwlSize.Location = new System.Drawing.Point(3, 58); this.kwlSize.Name = "kwlSize"; - this.kwlSize.Size = new System.Drawing.Size(405, 26); - this.kwlSize.StateCommon.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlSize.Text = "kryptonWrapLabel1"; + this.kwlSize.Size = new System.Drawing.Size(334, 15); this.kwlSize.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // DownloadUpdateDialog // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(487, 106); + this.BackStyle = Krypton.Toolkit.PaletteBackStyle.PanelClient; + this.ClientSize = new System.Drawing.Size(413, 111); this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "DownloadUpdateDialog"; this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Software Update"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DownloadUpdateDialog_FormClosing); this.Load += new System.EventHandler(this.DownloadUpdateDialog_Load); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); this.kryptonPanel1.ResumeLayout(false); this.kryptonTableLayoutPanel1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.pbxIcon)).EndInit(); this.kryptonTableLayoutPanel2.ResumeLayout(false); + this.kryptonTableLayoutPanel2.PerformLayout(); this.ResumeLayout(false); } @@ -167,10 +171,10 @@ private void InitializeComponent() private KryptonPanel kryptonPanel1; private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pbxIcon; private KryptonTableLayoutPanel kryptonTableLayoutPanel2; private KryptonProgressBar kpbDownloadProgress; - private KryptonWrapLabel kwlHeader; + private KryptonWrapLabel kwlInformation; + private PictureBox pbxIcon; private KryptonWrapLabel kwlSize; } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.cs similarity index 74% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.cs rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.cs index 2bec5b1bf..35521671f 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.cs @@ -1,62 +1,50 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { public partial class DownloadUpdateDialog : KryptonForm { #region Instance Fields - private readonly UpdateInfoEventArgs _args; + private readonly UpdateInfoEventArgs _updateInfo; - private DateTime _startedAt; + private DateTime _startTime; private string _tempFile; - private MyWebClient? _webClient; + private MyWebClient _webClient; #endregion + #region Identity + + /// Initializes a new instance of the class. + /// The instance containing the event data. public DownloadUpdateDialog(UpdateInfoEventArgs args) { InitializeComponent(); - _args = args; + _updateInfo = args; + + TopMost = AutoUpdater.TopMost; + + if (AutoUpdater.Icon != null) + { + Icon = Icon.FromHandle(AutoUpdater.Icon.GetHicon()); + } - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == UpdateMode.ForcedDownload) + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.ForcedDownload) { ControlBox = false; } } + + #endregion + + #region Implementation + private void DownloadUpdateDialog_Load(object sender, EventArgs e) { - var uri = new Uri(_args.DownloadURL); + var uri = new Uri(_updateInfo.DownloadURL); _webClient = AutoUpdater.GetWebClient(uri, AutoUpdater.BasicAuthDownload); @@ -73,30 +61,27 @@ private void DownloadUpdateDialog_Load(object sender, EventArgs e) } } - if (_webClient != null) - { - _webClient.DownloadProgressChanged += OnDownloadProgressChanged; + _webClient.DownloadProgressChanged += OnDownloadProgressChanged; - _webClient.DownloadFileCompleted += WebClientOnDownloadFileCompleted; + _webClient.DownloadFileCompleted += WebClientOnDownloadFileCompleted; - _webClient.DownloadFileAsync(uri, _tempFile); - } + _webClient.DownloadFileAsync(uri, _tempFile); } private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { - if (_startedAt == default) + if (_startTime == default) { - _startedAt = DateTime.Now; + _startTime = DateTime.Now; } else { - TimeSpan timeSpan = DateTime.Now - _startedAt; + TimeSpan timeSpan = DateTime.Now - _startTime; var totalSeconds = (long)timeSpan.TotalSeconds; if (totalSeconds > 0) { long bytesPerSecond = e.BytesReceived / totalSeconds; - kwlHeader.Text = + kwlInformation.Text = string.Format(AutoUpdaterLanguageManager.UpdaterStrings.DownloadSpeedMessage, BytesToString(bytesPerSecond)); } } @@ -119,19 +104,19 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent throw asyncCompletedEventArgs.Error; } - if (_args.CheckSum != null) + if (_updateInfo.CheckSum != null) { - CompareChecksum(_tempFile, _args.CheckSum); + CompareChecksum(_tempFile, _updateInfo.CheckSum); } // Try to parse the content disposition header if it exists. - ContentDisposition? contentDisposition = null; - if (_webClient != null && !string.IsNullOrWhiteSpace(_webClient.ResponseHeaders?["Content-Disposition"])) + ContentDisposition contentDisposition = null; + if (!string.IsNullOrWhiteSpace(_webClient.ResponseHeaders?["Content-Disposition"])) { try { contentDisposition = - new ContentDisposition(_webClient.ResponseHeaders?["Content-Disposition"]!); + new ContentDisposition(_webClient.ResponseHeaders["Content-Disposition"]); } catch (FormatException) { @@ -140,9 +125,9 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent } } - string? fileName = string.IsNullOrEmpty(contentDisposition?.FileName) - ? Path.GetFileName(_webClient?.ResponseUri.LocalPath) - : contentDisposition?.FileName; + string fileName = string.IsNullOrEmpty(contentDisposition?.FileName) + ? Path.GetFileName(_webClient.ResponseUri.LocalPath) + : contentDisposition.FileName; if (string.IsNullOrWhiteSpace(fileName)) { @@ -164,9 +149,9 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent File.Move(_tempFile, tempPath); string? installerArgs = null; - if (!string.IsNullOrEmpty(_args.InstallerArgs)) + if (!string.IsNullOrEmpty(_updateInfo.InstallerArgs)) { - installerArgs = _args.InstallerArgs.Replace("%path%", + installerArgs = _updateInfo.InstallerArgs.Replace("%path%", Path.GetDirectoryName(Process.GetCurrentProcess().MainModule?.FileName)); } @@ -187,7 +172,7 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent File.WriteAllBytes(installerPath, Resources.ZipExtractor1); string? currentExe = Process.GetCurrentProcess().MainModule?.FileName; - string? updatedExe = _args.ExecutablePath; + string? updatedExe = _updateInfo.ExecutablePath; string? extractionPath = Path.GetDirectoryName(currentExe); if (string.IsNullOrWhiteSpace(updatedExe) && @@ -210,13 +195,13 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent var arguments = new Collection { - "--input", - tempPath, - "--output", - extractionPath, - "--current-exe", - currentExe - }; + "--input", + tempPath, + "--output", + extractionPath, + "--current-exe", + currentExe + }; if (!string.IsNullOrWhiteSpace(updatedExe)) { @@ -226,7 +211,7 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent if (AutoUpdater.ClearAppDirectory) { - arguments.Add(" --clear"); + arguments.Add("--clear"); } string[] args = Environment.GetCommandLineArgs(); @@ -236,7 +221,7 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent arguments.Add(string.Join(" ", args.Skip(1).Select(arg => $"\"{arg}\""))); } - processStartInfo.Arguments = Utils.BuildArguments(arguments); + processStartInfo.Arguments = Utilities.BuildArguments(arguments); } else if (extension.Equals(".msi", StringComparison.OrdinalIgnoreCase)) { @@ -247,16 +232,16 @@ private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEvent var arguments = new Collection { - "/i", - tempPath - }; + "/i", + tempPath + }; if (!string.IsNullOrEmpty(installerArgs)) { arguments.Add(installerArgs); } - processStartInfo.Arguments = Utils.BuildArguments(arguments); + processStartInfo.Arguments = Utilities.BuildArguments(arguments); } if (AutoUpdater.RunUpdateAsAdmin) @@ -332,7 +317,7 @@ private static void CompareChecksum(string fileName, CheckSum checksum) private void DownloadUpdateDialog_FormClosing(object sender, FormClosingEventArgs e) { - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == UpdateMode.ForcedDownload) + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.ForcedDownload) { AutoUpdater.Exit(); return; @@ -346,5 +331,8 @@ private void DownloadUpdateDialog_FormClosing(object sender, FormClosingEventArg _webClient.CancelAsync(); DialogResult = DialogResult.Cancel; } + + #endregion + } -} +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.resx similarity index 89% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.resx rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.resx index c9a390eae..28dd3a5fb 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.resx +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/DownloadUpdateDialog.resx @@ -120,20 +120,34 @@ - iVBORw0KGgoAAAANSUhEUgAAArkAAABuCAYAAAAj+gsKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAK8SURBVHhe7drBaQRBDABBp7sxOgeH4TTOnOD8UgJq6lEs - s0qgEfp6nuf19v3zO19vb29vb29vb2/v6++J3PcPAAAomMjdBgAAcJlNLgAAKc4VAADIEbkAAORM5G4D - AAC4zCYXAIAU5woAAOSIXAAAciZytwEAAFxmkwsAQIpzBQAAckQuAAA5E7nbAAAALrPJBQAgxbkCAAA5 - IhcAgJyJ3G0AAACX2eQCAJDiXAEAgByRCwBAzkTuNgAAgMtscgEASHGuAABAjsgFACBnIncbAADAZTa5 - AACkOFcAACBH5AIAkDORuw0AAOAym1wAAFKcKwAAkCNyAQDImcjdBgAAcJlNLgAAKc4VAADIEbkAAORM - 5G4DAAC4zCYXAIAU5woAAOSIXAAAciZytwEAAFxmkwsAQIpzBQAAckQuAAA5E7nbAAAALrPJBQAgxbkC - AAA5IhcAgJyJ3G0AAACX2eQCAJDiXAEAgByRCwBAzkTuNgAAgMtscgEASHGuAABAjsgFACBnIncbAADA - ZTa5AACkOFcAACBH5AIAkDORuw0AAOAym1wAAFKcKwAAkCNyAQDImcjdBgAAcJlNLgAAKc4VAADIEbkA - AORM5G4DAAC4zCYXAIAU5woAAOSIXAAAciZytwEAAFxmkwsAQIpzBQAAckQuAAA5E7nbAAAALrPJBQAg - xbkCAAA5IhcAgJyJ3G0AAACX2eQCAJDiXAEAgByRCwBAzkTuNgAAgMtscgEASHGuAABAjsgFACBnIncb - AADAZTa5AACkOFcAACBH5AIAkDORuw0AAOAym1wAAFKcKwAAkCNyAQDImcjdBgAAcJlNLgAAKc4VAADI - EbkAAORM5G4DAAC4zCYXAIAU5woAAOSIXAAAciZytwEAAFxmkwsAQIpzBQAAcv4j9+Pz09vb29vb29vb - 2/vu+3n9AVxQuJgcWJuzAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAAZ0AAABvCAYAAAA38h0EAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIwSURBVHhe7djBaQNADADBtOsa00PKSBsOFtgvPZV9zWM4 + DhWwSF+Px+P5/fP7fL1v/v7+/v7+//H/RAcA/pvoAJCYTWcbAMA15zUAMqIDQEp0AEjMprMNAOCa8xoA + GdEBICU6ACRm09kGAHDNeQ2AjOgAkBIdABKz6WwDALjmvAZARnQASIkOAInZdLYBAFxzXgMgIzoApEQH + gMRsOtsAAK45rwGQER0AUqIDQGI2nW0AANec1wDIiA4AKdEBIDGbzjYAgGvOawBkRAeAlOgAkJhNZxsA + wDXnNQAyogNASnQASMymsw0A4JrzGgAZ0QEgJToAJGbT2QYAcM15DYCM6ACQEh0AErPpbAMAuOa8BkBG + dABIiQ4Aidl0tgEAXHNeAyAjOgCkRAeAxGw62wAArjmvAZARHQBSogNAYjadbQAA15zXAMiIDgAp0QEg + MZvONgCAa85rAGREB4CU6ACQmE1nGwDANec1ADKiA0BKdABIzKazDQDgmvMaABnRASAlOgAkZtPZBgBw + zXkNgIzoAJASHQASs+lsAwC45rwGQEZ0AEiJDgCJ2XS2AQBcc14DICM6AKREB4DEbDrbAACuOa8BkBEd + AFKiA0BiNp1tAADXnNcAyIgOACnRASAxm842AIBrzmsAZEQHgJToAJCYTWcbAMA15zUAMqIDQEp0AEjM + prMNAOCa8xoAGdEBICU6ACRm09kGAHDNeQ2AjOgAkPpE5/W++fv7+/v73/8fzz9RAaDdwg4JIQAAAABJ + RU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAVQAAABpCAYAAABlAdtyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJCSURBVHhe7dixbWNREARBJc+olIPCYBoUDgcd2pBx0qxZ + RoH4NNsYLN7b4/F4vX88X39+v/j27du3759//xtU/kb57n+A/2FQQwtg8fbdnwD8nAs1tAAWBjW0ABYG + NbQAFt5QAY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBD + C2DhDRXgiAs1tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQA + Ft5QAY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBDC2Dh + DRXgiAs1tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQAFt5Q + AY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBDC2DhDRXg + iAs1tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQAFt5QAY64 + UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1 + tAAWBjW0ABYGNbQAFt5QAY64UEMLYGFQQwtgYVBDC2DhDRXgiAs1tAAWBjW0ABYGNbQAFgYV4IhBDS2A + 33u+PgG0zPs9LZD07gAAAABJRU5ErkJggg== diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.Designer.cs similarity index 54% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.Designer.cs rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.Designer.cs index 6f67bf625..06d15413d 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.Designer.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.Designer.cs @@ -1,6 +1,6 @@ namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - partial class RemindLaterWindow + partial class RemindLaterForm { /// /// Required designer variable. @@ -28,12 +28,12 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RemindLaterWindow)); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RemindLaterForm)); this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.kwlHeader = new Krypton.Toolkit.KryptonWrapLabel(); - this.kwlDescription = new Krypton.Toolkit.KryptonWrapLabel(); + this.pictureBoxIcon = new System.Windows.Forms.PictureBox(); + this.klblTitle = new Krypton.Toolkit.KryptonLabel(); + this.kwlblDescription = new Krypton.Toolkit.KryptonWrapLabel(); this.krbYes = new Krypton.Toolkit.KryptonRadioButton(); this.kcmbRemindLater = new Krypton.Toolkit.KryptonComboBox(); this.krbNo = new Krypton.Toolkit.KryptonRadioButton(); @@ -41,7 +41,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); this.kryptonPanel1.SuspendLayout(); this.kryptonTableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.kcmbRemindLater)).BeginInit(); this.SuspendLayout(); // @@ -51,8 +51,8 @@ private void InitializeComponent() this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(596, 208); - this.kryptonPanel1.TabIndex = 1; + this.kryptonPanel1.Size = new System.Drawing.Size(499, 198); + this.kryptonPanel1.TabIndex = 0; // // kryptonTableLayoutPanel1 // @@ -60,11 +60,11 @@ private void InitializeComponent() this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.kryptonTableLayoutPanel1.ColumnCount = 3; this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.kryptonTableLayoutPanel1.Controls.Add(this.pictureBox1, 0, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlHeader, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlDescription, 1, 1); + this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.kryptonTableLayoutPanel1.Controls.Add(this.pictureBoxIcon, 0, 0); + this.kryptonTableLayoutPanel1.Controls.Add(this.klblTitle, 1, 0); + this.kryptonTableLayoutPanel1.Controls.Add(this.kwlblDescription, 1, 1); this.kryptonTableLayoutPanel1.Controls.Add(this.krbYes, 1, 2); this.kryptonTableLayoutPanel1.Controls.Add(this.kcmbRemindLater, 2, 2); this.kryptonTableLayoutPanel1.Controls.Add(this.krbNo, 1, 3); @@ -74,125 +74,122 @@ private void InitializeComponent() this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; this.kryptonTableLayoutPanel1.RowCount = 5; this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(596, 208); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // pictureBox1 - // - this.pictureBox1.BackColor = System.Drawing.Color.Transparent; - this.pictureBox1.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.clock_go1; - this.pictureBox1.Location = new System.Drawing.Point(3, 3); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.kryptonTableLayoutPanel1.SetRowSpan(this.pictureBox1, 2); - this.pictureBox1.Size = new System.Drawing.Size(80, 90); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; - // - // kwlHeader - // - this.kwlHeader.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlHeader, 2); - this.kwlHeader.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlHeader.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlHeader.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlHeader.Location = new System.Drawing.Point(89, 0); - this.kwlHeader.Name = "kwlHeader"; - this.kwlHeader.Size = new System.Drawing.Size(504, 23); - this.kwlHeader.StateCommon.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlHeader.Text = "Do you want to download updates later?"; - // - // kwlDescription - // - this.kwlDescription.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlDescription, 2); - this.kwlDescription.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlDescription.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDescription.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlDescription.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlDescription.Location = new System.Drawing.Point(89, 23); - this.kwlDescription.Name = "kwlDescription"; - this.kwlDescription.Size = new System.Drawing.Size(504, 93); - this.kwlDescription.StateCommon.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDescription.Text = "You should download updates now. This only takes few minutes depending on your in" + - "ternet connection and ensures you have latest version of the application."; - this.kwlDescription.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(499, 198); + this.kryptonTableLayoutPanel1.TabIndex = 1; + // + // pictureBoxIcon + // + this.pictureBoxIcon.BackColor = System.Drawing.Color.Transparent; + this.pictureBoxIcon.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBoxIcon.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.clock_go_32; + this.pictureBoxIcon.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.pictureBoxIcon.Location = new System.Drawing.Point(3, 3); + this.pictureBoxIcon.Name = "pictureBoxIcon"; + this.kryptonTableLayoutPanel1.SetRowSpan(this.pictureBoxIcon, 2); + this.pictureBoxIcon.Size = new System.Drawing.Size(79, 90); + this.pictureBoxIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pictureBoxIcon.TabIndex = 2; + this.pictureBoxIcon.TabStop = false; + // + // klblTitle + // + this.klblTitle.AutoSize = false; + this.kryptonTableLayoutPanel1.SetColumnSpan(this.klblTitle, 2); + this.klblTitle.Dock = System.Windows.Forms.DockStyle.Fill; + this.klblTitle.LabelStyle = Krypton.Toolkit.LabelStyle.TitlePanel; + this.klblTitle.Location = new System.Drawing.Point(88, 3); + this.klblTitle.Name = "klblTitle"; + this.klblTitle.Size = new System.Drawing.Size(408, 25); + this.klblTitle.TabIndex = 3; + this.klblTitle.Values.Text = "kryptonLabel1"; + // + // kwlblDescription + // + this.kwlblDescription.AutoSize = false; + this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlblDescription, 2); + this.kwlblDescription.Dock = System.Windows.Forms.DockStyle.Fill; + this.kwlblDescription.Font = new System.Drawing.Font("Segoe UI", 9F); + this.kwlblDescription.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); + this.kwlblDescription.LabelStyle = Krypton.Toolkit.LabelStyle.AlternateControl; + this.kwlblDescription.Location = new System.Drawing.Point(88, 31); + this.kwlblDescription.Name = "kwlblDescription"; + this.kwlblDescription.Size = new System.Drawing.Size(408, 65); + this.kwlblDescription.Text = "kryptonWrapLabel1"; + this.kwlblDescription.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // krbYes // this.krbYes.Checked = true; - this.krbYes.Location = new System.Drawing.Point(89, 119); + this.krbYes.Dock = System.Windows.Forms.DockStyle.Fill; + this.krbYes.Location = new System.Drawing.Point(88, 99); this.krbYes.Name = "krbYes"; - this.krbYes.Size = new System.Drawing.Size(218, 24); - this.krbYes.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.krbYes.TabIndex = 3; - this.krbYes.Values.Text = "Yes, please remind me later : "; + this.krbYes.Size = new System.Drawing.Size(281, 28); + this.krbYes.TabIndex = 5; + this.krbYes.Values.Text = "kryptonRadioButton1"; this.krbYes.CheckedChanged += new System.EventHandler(this.krbYes_CheckedChanged); // // kcmbRemindLater // this.kcmbRemindLater.Dock = System.Windows.Forms.DockStyle.Fill; this.kcmbRemindLater.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.kcmbRemindLater.DropDownWidth = 249; + this.kcmbRemindLater.DropDownWidth = 121; this.kcmbRemindLater.IntegralHeight = false; - this.kcmbRemindLater.Location = new System.Drawing.Point(344, 119); + this.kcmbRemindLater.Location = new System.Drawing.Point(375, 99); this.kcmbRemindLater.Name = "kcmbRemindLater"; - this.kcmbRemindLater.Size = new System.Drawing.Size(249, 25); - this.kcmbRemindLater.StateCommon.ComboBox.Content.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kcmbRemindLater.Size = new System.Drawing.Size(121, 21); this.kcmbRemindLater.StateCommon.ComboBox.Content.TextH = Krypton.Toolkit.PaletteRelativeAlign.Near; - this.kcmbRemindLater.TabIndex = 4; + this.kcmbRemindLater.TabIndex = 6; // // krbNo // this.kryptonTableLayoutPanel1.SetColumnSpan(this.krbNo, 2); this.krbNo.Dock = System.Windows.Forms.DockStyle.Fill; - this.krbNo.Location = new System.Drawing.Point(89, 150); + this.krbNo.LabelStyle = Krypton.Toolkit.LabelStyle.BoldPanel; + this.krbNo.Location = new System.Drawing.Point(88, 133); this.krbNo.Name = "krbNo"; - this.krbNo.Size = new System.Drawing.Size(504, 24); - this.krbNo.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.krbNo.TabIndex = 5; - this.krbNo.Values.Text = "No, download updates now (recommended)"; + this.krbNo.Size = new System.Drawing.Size(408, 28); + this.krbNo.TabIndex = 7; + this.krbNo.Values.Text = "kryptonRadioButton2"; // // kbtnOk // - this.kbtnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.kbtnOk.Dock = System.Windows.Forms.DockStyle.Fill; - this.kbtnOk.Location = new System.Drawing.Point(344, 180); + this.kbtnOk.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.kbtnOk.AutoSize = true; + this.kbtnOk.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.kbtnOk.Location = new System.Drawing.Point(385, 167); this.kbtnOk.Name = "kbtnOk"; - this.kbtnOk.Size = new System.Drawing.Size(249, 25); - this.kbtnOk.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnOk.TabIndex = 6; + this.kbtnOk.Size = new System.Drawing.Size(111, 28); + this.kbtnOk.TabIndex = 8; this.kbtnOk.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.clock_go; - this.kbtnOk.Values.Text = "Ok"; + this.kbtnOk.Values.Text = "kryptonButton1"; this.kbtnOk.Click += new System.EventHandler(this.kbtnOk_Click); // - // RemindLaterWindow + // RemindLaterForm // + this.AcceptButton = this.kbtnOk; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(596, 208); + this.ClientSize = new System.Drawing.Size(499, 198); this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; - this.Name = "RemindLaterWindow"; + this.Name = "RemindLaterForm"; this.ShowIcon = false; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Remind me later to update"; - this.Load += new System.EventHandler(this.RemindLaterWindow_Load); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); + this.Text = "Remind me later for update"; + this.Load += new System.EventHandler(this.RemindLaterForm_Load); ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); this.kryptonPanel1.ResumeLayout(false); this.kryptonTableLayoutPanel1.ResumeLayout(false); this.kryptonTableLayoutPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.kcmbRemindLater)).EndInit(); this.ResumeLayout(false); @@ -202,9 +199,9 @@ private void InitializeComponent() private KryptonPanel kryptonPanel1; private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pictureBox1; - private KryptonWrapLabel kwlHeader; - private KryptonWrapLabel kwlDescription; + private PictureBox pictureBoxIcon; + private KryptonLabel klblTitle; + private KryptonWrapLabel kwlblDescription; private KryptonRadioButton krbYes; private KryptonComboBox kcmbRemindLater; private KryptonRadioButton krbNo; diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.cs similarity index 62% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.cs rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.cs index 84f27132e..bf32d3959 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.cs @@ -1,34 +1,6 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - public partial class RemindLaterWindow : KryptonForm + public partial class RemindLaterForm : KryptonForm { #region Public @@ -38,25 +10,46 @@ public partial class RemindLaterWindow : KryptonForm #endregion - #region Identity - - public RemindLaterWindow() + public RemindLaterForm() { InitializeComponent(); - SetupRemindLaterComboBox(); + TopMost = AutoUpdater.TopMost; SetupUI(); } - #endregion + private void SetupUI() + { + klblTitle.Text = AutoUpdaterLanguageManager.LaterWindowStrings.HeaderText; - #region Implementation + kwlblDescription.Text = AutoUpdaterLanguageManager.LaterWindowStrings.Description; + + Text = AutoUpdaterLanguageManager.LaterWindowStrings.WindowTitle; + + krbNo.Text = AutoUpdaterLanguageManager.LaterWindowStrings.NoText; + + krbYes.Text = AutoUpdaterLanguageManager.LaterWindowStrings.YesText; - private void RemindLaterWindow_Load(object sender, EventArgs e) - { kbtnOk.Text = KryptonLanguageManager.GeneralToolkitStrings.OK; + kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.ThirtyMinutes); + + kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.TwelveHours); + + kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.OneDay); + + kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.TwoDays); + + kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.FourDays); + + kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.EightDays); + + kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.TenDays); + } + + private void RemindLaterForm_Load(object sender, EventArgs e) + { kcmbRemindLater.SelectedIndex = 0; krbYes.Checked = true; @@ -106,41 +99,6 @@ private void kbtnOk_Click(object sender, EventArgs e) } } - private void krbYes_CheckedChanged(object sender, EventArgs e) - { - kcmbRemindLater.Enabled = krbYes.Checked; - } - - private void SetupRemindLaterComboBox() - { - kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.ThirtyMinutes); - - kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.TwelveHours); - - kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.OneDay); - - kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.TwoDays); - - kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.FourDays); - - kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.EightDays); - - kcmbRemindLater.Items.Add(AutoUpdaterLanguageManager.TimingStrings.TenDays); - } - - private void SetupUI() - { - Text = AutoUpdaterLanguageManager.LaterWindowStrings.WindowTitle; - - kwlHeader.Text = AutoUpdaterLanguageManager.LaterWindowStrings.HeaderText; - - kwlDescription.Text = AutoUpdaterLanguageManager.LaterWindowStrings.Description; - - krbYes.Text = AutoUpdaterLanguageManager.LaterWindowStrings.YesText; - - krbNo.Text = AutoUpdaterLanguageManager.LaterWindowStrings.NoText; - } - - #endregion + private void krbYes_CheckedChanged(object sender, EventArgs e) => kcmbRemindLater.Enabled = krbYes.Checked; } } diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.resx similarity index 76% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.resx rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.resx index 66177281d..20b7e21d8 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/RemindLaterWindow.resx +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/RemindLaterForm.resx @@ -120,28 +120,25 @@ - iVBORw0KGgoAAAANSUhEUgAAAlQAAADQCAYAAADBJv/OAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAASISURBVHhe7djBSURREERR050YzcEwTGPEhhGEXpRWL8/i - 8Hm/Eyju2/vH5/PxePzw9vb29vb29vb+2/vt9RMAgP8xqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoV - AEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAA - CgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABww - qAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1AB - ABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAg - o1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2 - AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBp - BtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoV - AEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAA - CgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABww - qAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1AB - ABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAg - o1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2 - AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBp - BtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoV - AEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAA - CgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABww - qAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACgoVAEBpBtV2AAAgo1AB - ABwwqAAACgoVAEBpBtV2AAAgo1ABABwwqAAACr8K1ff3xdvb29vb29vbO30/nl9MNY0eA5gk7gAAAABJ - RU5ErkJggg== + iVBORw0KGgoAAAANSUhEUgAAAfMAAADGCAYAAADGz2nhAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wgAADsIBFShKgAAABAJJREFUeF7t2EFtBEEMAMHQXYzhEBihcdFays8E2qpH6W7WAFr21/M8n9f3z+/8 + ent7e3t7e7feE/P3DwDQ83b8axsAAA0Tc5s5AHSJOQAcIOYAEDab+TYAABqc2QEgTswB4AAxB4Cw2cy3 + AQDQ4MwOAHFiDgAHiDkAhM1mvg0AgAZndgCIE3MAOEDMASBsNvNtAAA0OLMDQJyYA8ABYg4AYbOZbwMA + oMGZHQDixBwADhBzAAibzXwbAAANzuwAECfmAHCAmANA2Gzm2wAAaHBmB4A4MQeAA8QcAMJmM98GAECD + MzsAxIk5ABwg5gAQNpv5NgAAGpzZASBOzAHgADEHgLDZzLcBANDgzA4AcWIOAAeIOQCEzWa+DQCABmd2 + AIgTcwA4QMwBIGw2820AADQ4swNAnJgDwAFiDgBhs5lvAwCgwZkdAOLEHAAOEHMACJvNfBsAAA3O7AAQ + J+YAcICYA0DYbObbAABocGYHgDgxB4ADxBwAwmYz3wYAQIMzOwDEiTkAHCDmABA2m/k2AAAanNkBIE7M + AeAAMQeAsNnMtwEA0ODMDgBxYg4AB4g5AITNZr4NAIAGZ3YAiBNzADhAzAEgbDbzbQAANDizA0CcmAPA + AWIOAGGzmW8DAKDBmR0A4sQcAA4QcwAIm818GwAADc7sABAn5gBwgJgDQNhs5tsAAGhwZgeAODEHgAPE + HADCZjPfBgBAgzM7AMSJOQAcIOYAEDab+TYAABqc2QEgTswB4AAxB4Cw2cy3AQDQ4MwOAHFiDgAHiDkA + hM1mvg0AgAZndgCIE3MAOEDMASBsNvNtAAA0OLMDQJyYA8ABYg4AYbOZbwMAoMGZHQDixBwADhBzAAib + zXwbAAANzuwAECfmAHCAmANA2Gzm2wAAaHBmB4A4MQeAA8QcAMJmM98GAECDMzsAxIk5ABwg5gAQNpv5 + NgAAGpzZASBOzAHgADEHgLDZzLcBANDgzA4AcWIOAAeIOQCEzWa+DQCABmd2AIgTcwA4QMwBIGw2820A + ADQ4swNAnJgDwAFiDgBhs5lvAwCgwZkdAOLEHAAOEHMACJvNfBsAAA3O7AAQJ+YAcICYA0DYbObbAABo + cGYHgDgxB4ADxBwAwmYz3wYAQIMzOwDEiTkAHCDmABA2m/k2AAAanNkBIE7MAeAAMQeAsNnMtwEA0ODM + DgBxYg4AB4g5AITNZr4NAIAGZ3YAiBNzADhAzAEgbDbzbQAANDizA0CcmAPAAWIOAGGzmW8DAKDBmR0A + 4sQcAA4QcwAIm818GwAADc7sABAn5gBwgJgDQNhs5tsAAGhwZgeAODEHgAPEHADCZjPfBgBAgzM7AMSJ + OQAcMDH/937w9vb29vb2Lr2fzx+xTxJqXfTgFgAAAABJRU5ErkJggg== \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.Designer.cs new file mode 100644 index 000000000..582e8c2f2 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.Designer.cs @@ -0,0 +1,255 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + partial class UpdateDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UpdateDialog)); + this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); + this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); + this.pictureBoxIcon = new System.Windows.Forms.PictureBox(); + this.klblTitle = new Krypton.Toolkit.KryptonLabel(); + this.klblDescription = new Krypton.Toolkit.KryptonLabel(); + this.klblReleaseNotes = new Krypton.Toolkit.KryptonLabel(); + this.kbtnSkip = new Krypton.Toolkit.KryptonButton(); + this.kbtnRemind = new Krypton.Toolkit.KryptonButton(); + this.kbtnUpdate = new Krypton.Toolkit.KryptonButton(); + this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); + this.wvChangelog = new Microsoft.Web.WebView2.WinForms.WebView2(); + this.kwbChangelog = new Krypton.Toolkit.KryptonWebBrowser(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); + this.kryptonPanel1.SuspendLayout(); + this.kryptonTableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); + this.kryptonPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.wvChangelog)).BeginInit(); + this.SuspendLayout(); + // + // kryptonPanel1 + // + this.kryptonPanel1.Controls.Add(this.kryptonTableLayoutPanel1); + this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); + this.kryptonPanel1.Name = "kryptonPanel1"; + this.kryptonPanel1.Size = new System.Drawing.Size(643, 612); + this.kryptonPanel1.TabIndex = 0; + // + // kryptonTableLayoutPanel1 + // + this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); + this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.kryptonTableLayoutPanel1.ColumnCount = 4; + this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.kryptonTableLayoutPanel1.Controls.Add(this.pictureBoxIcon, 0, 0); + this.kryptonTableLayoutPanel1.Controls.Add(this.klblTitle, 1, 0); + this.kryptonTableLayoutPanel1.Controls.Add(this.klblDescription, 1, 1); + this.kryptonTableLayoutPanel1.Controls.Add(this.klblReleaseNotes, 1, 2); + this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnSkip, 1, 4); + this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnRemind, 2, 4); + this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnUpdate, 3, 4); + this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonPanel2, 1, 3); + this.kryptonTableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; + this.kryptonTableLayoutPanel1.RowCount = 5; + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(643, 612); + this.kryptonTableLayoutPanel1.TabIndex = 0; + // + // pictureBoxIcon + // + this.pictureBoxIcon.BackColor = System.Drawing.Color.Transparent; + this.pictureBoxIcon.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.update2; + this.pictureBoxIcon.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.pictureBoxIcon.Location = new System.Drawing.Point(3, 3); + this.pictureBoxIcon.Name = "pictureBoxIcon"; + this.pictureBoxIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); + this.kryptonTableLayoutPanel1.SetRowSpan(this.pictureBoxIcon, 2); + this.pictureBoxIcon.Size = new System.Drawing.Size(70, 66); + this.pictureBoxIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pictureBoxIcon.TabIndex = 9; + this.pictureBoxIcon.TabStop = false; + // + // klblTitle + // + this.klblTitle.AutoSize = false; + this.kryptonTableLayoutPanel1.SetColumnSpan(this.klblTitle, 3); + this.klblTitle.Dock = System.Windows.Forms.DockStyle.Fill; + this.klblTitle.LabelStyle = Krypton.Toolkit.LabelStyle.TitlePanel; + this.klblTitle.Location = new System.Drawing.Point(79, 3); + this.klblTitle.Name = "klblTitle"; + this.klblTitle.Size = new System.Drawing.Size(561, 25); + this.klblTitle.TabIndex = 10; + this.klblTitle.Values.Text = "kryptonLabel1"; + // + // klblDescription + // + this.klblDescription.AutoSize = false; + this.kryptonTableLayoutPanel1.SetColumnSpan(this.klblDescription, 3); + this.klblDescription.Dock = System.Windows.Forms.DockStyle.Fill; + this.klblDescription.Location = new System.Drawing.Point(79, 34); + this.klblDescription.Name = "klblDescription"; + this.klblDescription.Size = new System.Drawing.Size(561, 35); + this.klblDescription.TabIndex = 11; + this.klblDescription.Values.Text = "kryptonLabel2"; + // + // klblReleaseNotes + // + this.kryptonTableLayoutPanel1.SetColumnSpan(this.klblReleaseNotes, 3); + this.klblReleaseNotes.Dock = System.Windows.Forms.DockStyle.Fill; + this.klblReleaseNotes.LabelStyle = Krypton.Toolkit.LabelStyle.BoldPanel; + this.klblReleaseNotes.Location = new System.Drawing.Point(79, 75); + this.klblReleaseNotes.Name = "klblReleaseNotes"; + this.klblReleaseNotes.Size = new System.Drawing.Size(561, 20); + this.klblReleaseNotes.TabIndex = 12; + this.klblReleaseNotes.Values.Text = "kryptonLabel3"; + // + // kbtnSkip + // + this.kbtnSkip.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.kbtnSkip.AutoSize = true; + this.kbtnSkip.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.kbtnSkip.Location = new System.Drawing.Point(79, 587); + this.kbtnSkip.Name = "kbtnSkip"; + this.kbtnSkip.Size = new System.Drawing.Size(111, 22); + this.kbtnSkip.TabIndex = 14; + this.kbtnSkip.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.hand_point; + this.kbtnSkip.Values.Text = "kryptonButton1"; + this.kbtnSkip.Click += new System.EventHandler(this.kbtnSkip_Click); + // + // kbtnRemind + // + this.kbtnRemind.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.kbtnRemind.AutoSize = true; + this.kbtnRemind.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.kbtnRemind.Location = new System.Drawing.Point(340, 587); + this.kbtnRemind.Name = "kbtnRemind"; + this.kbtnRemind.Size = new System.Drawing.Size(111, 22); + this.kbtnRemind.TabIndex = 15; + this.kbtnRemind.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.clock_go; + this.kbtnRemind.Values.Text = "kryptonButton2"; + this.kbtnRemind.Click += new System.EventHandler(this.kbtnRemind_Click); + // + // kbtnUpdate + // + this.kbtnUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.kbtnUpdate.AutoSize = true; + this.kbtnUpdate.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.kbtnUpdate.Location = new System.Drawing.Point(529, 587); + this.kbtnUpdate.Name = "kbtnUpdate"; + this.kbtnUpdate.Size = new System.Drawing.Size(111, 22); + this.kbtnUpdate.TabIndex = 16; + this.kbtnUpdate.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.download; + this.kbtnUpdate.Values.Text = "kryptonButton3"; + this.kbtnUpdate.Click += new System.EventHandler(this.kbtnUpdate_Click); + // + // kryptonPanel2 + // + this.kryptonTableLayoutPanel1.SetColumnSpan(this.kryptonPanel2, 3); + this.kryptonPanel2.Controls.Add(this.wvChangelog); + this.kryptonPanel2.Controls.Add(this.kwbChangelog); + this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.kryptonPanel2.Location = new System.Drawing.Point(79, 101); + this.kryptonPanel2.Name = "kryptonPanel2"; + this.kryptonPanel2.Size = new System.Drawing.Size(561, 480); + this.kryptonPanel2.TabIndex = 17; + // + // wvChangelog + // + this.wvChangelog.AllowExternalDrop = true; + this.wvChangelog.CreationProperties = null; + this.wvChangelog.DefaultBackgroundColor = System.Drawing.Color.White; + this.wvChangelog.Dock = System.Windows.Forms.DockStyle.Fill; + this.wvChangelog.Location = new System.Drawing.Point(0, 0); + this.wvChangelog.Name = "wvChangelog"; + this.wvChangelog.Size = new System.Drawing.Size(561, 480); + this.wvChangelog.TabIndex = 14; + this.wvChangelog.ZoomFactor = 1D; + // + // kwbChangelog + // + this.kwbChangelog.Dock = System.Windows.Forms.DockStyle.Fill; + this.kwbChangelog.Location = new System.Drawing.Point(0, 0); + this.kwbChangelog.Name = "kwbChangelog"; + this.kwbChangelog.Size = new System.Drawing.Size(561, 480); + this.kwbChangelog.TabIndex = 0; + // + // UpdateDialog + // + this.AcceptButton = this.kbtnUpdate; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(643, 612); + this.Controls.Add(this.kryptonPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "UpdateDialog"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "UpdateDialog"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.UpdateDialog_FormClosing); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.UpdateDialog_FormClosed); + this.Load += new System.EventHandler(this.UpdateDialog_Load); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); + this.kryptonPanel1.ResumeLayout(false); + this.kryptonTableLayoutPanel1.ResumeLayout(false); + this.kryptonTableLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); + this.kryptonPanel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.wvChangelog)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private KryptonPanel kryptonPanel1; + private KryptonTableLayoutPanel kryptonTableLayoutPanel1; + private PictureBox pictureBoxIcon; + private KryptonLabel klblTitle; + private KryptonLabel klblDescription; + private KryptonLabel klblReleaseNotes; + private KryptonButton kbtnSkip; + private KryptonButton kbtnRemind; + private KryptonButton kbtnUpdate; + private KryptonPanel kryptonPanel2; + private KryptonWebBrowser kwbChangelog; + private Microsoft.Web.WebView2.WinForms.WebView2 wvChangelog; + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.cs similarity index 59% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.cs rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.cs index 0e709ab24..9dff83cfd 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.cs @@ -1,91 +1,47 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -using Application = System.Windows.Forms.Application; -// ReSharper disable InconsistentNaming +using Application = System.Windows.Forms.Application; namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - public partial class UpdateWindow : KryptonForm + public partial class UpdateDialog : KryptonForm { #region Instance Fields - private readonly UpdateInfoEventArgs _args; + private readonly UpdateInfoEventArgs _updateInfoEventArgs; #endregion - #region Identity - - public UpdateWindow(UpdateInfoEventArgs args) + public UpdateDialog(UpdateInfoEventArgs updateInfoEventArgs) { InitializeComponent(); - InitializeBrowserControl(); - - _args = args; - - kbtnSkip.Visible = AutoUpdater.ShowSkipButton; - - kbtnRemind.Visible = AutoUpdater.ShowRemindLaterButton; + _updateInfoEventArgs = updateInfoEventArgs; - Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.WindowTitle, AutoUpdater.AppTitle, - _args.CurrentVersion); + TopMost = AutoUpdater.TopMost; - kwlHeader.Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.HeaderText, AutoUpdater.AppTitle); - - kwlDetails.Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.Description, AutoUpdater.AppTitle, - _args.CurrentVersion, _args.InstalledVersion); + if (AutoUpdater.Icon != null) + { + pictureBoxIcon.Image = AutoUpdater.Icon; - kwlReleaseNotes.Text = AutoUpdaterLanguageManager.WindowStrings.ReleaseNotesText; + Icon = Icon.FromHandle(AutoUpdater.Icon.GetHicon()); + } - kbtnRemind.Text = AutoUpdaterLanguageManager.WindowStrings.RemindLaterButtonText; + kbtnSkip.Visible = AutoUpdater.ShowSkipButton; - kbtnSkip.Text = AutoUpdaterLanguageManager.WindowStrings.SkipButtonText; + kbtnRemind.Visible = AutoUpdater.ShowRemindLaterButton; - kbtnUpdate.Text = AutoUpdaterLanguageManager.WindowStrings.UpdateButtonText; + InitializeBrowserControl(); - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == UpdateMode.Forced) - { - ControlBox = false; - } + SetupUI(); } - #endregion - private async void InitializeBrowserControl() { - if (string.IsNullOrEmpty(_args.ChangelogURL)) + if (string.IsNullOrEmpty(_updateInfoEventArgs.ChangelogURL)) { - ReducedUpdateWindow reducedUpdateWindow = new(_args); - - reducedUpdateWindow.Show(); - - Hide(); + int reduceHeight = klblReleaseNotes.Height + kryptonPanel2.Height; + klblReleaseNotes.Hide(); + kryptonPanel2.Hide(); + Height -= reduceHeight; } else { @@ -108,9 +64,9 @@ private async void InitializeBrowserControl() if (webView2RuntimeFound) { - kwbReleaseNotes.Hide(); - wvReleaseNotes.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted; - await wvReleaseNotes.EnsureCoreWebView2Async( + kwbChangelog.Hide(); + wvChangelog.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted; + await wvChangelog.EnsureCoreWebView2Async( await CoreWebView2Environment.CreateAsync(null, Path.GetTempPath())); } else @@ -118,19 +74,19 @@ private async void InitializeBrowserControl() UseLatestIE(); if (null != AutoUpdater.BasicAuthChangeLog) { - kwbReleaseNotes.Navigate(_args.ChangelogURL, "", null, + kwbChangelog.Navigate(_updateInfoEventArgs.ChangelogURL, "", null, $"Authorization: {AutoUpdater.BasicAuthChangeLog}"); } else { - kwbReleaseNotes.Navigate(_args.ChangelogURL); + kwbChangelog.Navigate(_updateInfoEventArgs.ChangelogURL); } } } } private void WebView_CoreWebView2InitializationCompleted(object sender, - CoreWebView2InitializationCompletedEventArgs e) + CoreWebView2InitializationCompletedEventArgs e) { if (!e.IsSuccess) { @@ -143,16 +99,16 @@ private async void InitializeBrowserControl() return; } - wvReleaseNotes.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false; - wvReleaseNotes.CoreWebView2.Settings.IsStatusBarEnabled = false; - wvReleaseNotes.CoreWebView2.Settings.AreDevToolsEnabled = Debugger.IsAttached; - wvReleaseNotes.CoreWebView2.Settings.UserAgent = AutoUpdater.GetUserAgent(); - wvReleaseNotes.CoreWebView2.Profile.ClearBrowsingDataAsync(); - wvReleaseNotes.Show(); - wvReleaseNotes.BringToFront(); + wvChangelog.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false; + wvChangelog.CoreWebView2.Settings.IsStatusBarEnabled = false; + wvChangelog.CoreWebView2.Settings.AreDevToolsEnabled = Debugger.IsAttached; + wvChangelog.CoreWebView2.Settings.UserAgent = AutoUpdater.GetUserAgent(); + wvChangelog.CoreWebView2.Profile.ClearBrowsingDataAsync(); + wvChangelog.Show(); + wvChangelog.BringToFront(); if (null != AutoUpdater.BasicAuthChangeLog) { - wvReleaseNotes.CoreWebView2.BasicAuthenticationRequested += delegate ( + wvChangelog.CoreWebView2.BasicAuthenticationRequested += delegate ( object _, CoreWebView2BasicAuthenticationRequestedEventArgs args) { @@ -161,12 +117,12 @@ private async void InitializeBrowserControl() }; } - wvReleaseNotes.CoreWebView2.Navigate(_args.ChangelogURL); + wvChangelog.CoreWebView2.Navigate(_updateInfoEventArgs.ChangelogURL); } private void UseLatestIE() { - int ieValue = kwbReleaseNotes.Version.Major switch + int ieValue = kwbChangelog.Version.Major switch { 11 => 11001, 10 => 10001, @@ -183,7 +139,7 @@ private void UseLatestIE() try { - using RegistryKey? registryKey = + using RegistryKey registryKey = Registry.CurrentUser.OpenSubKey( @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true); @@ -199,7 +155,26 @@ private void UseLatestIE() } } - private void UpdateWindow_Load(object sender, EventArgs e) + private void SetupUI() + { + Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.WindowTitle, AutoUpdater.AppTitle, + _updateInfoEventArgs.CurrentVersion); + + klblTitle.Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.HeaderText, + CultureInfo.CurrentCulture, AutoUpdater.AppTitle); + + klblDescription.Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.Description, + AutoUpdater.AppTitle, _updateInfoEventArgs.CurrentVersion, _updateInfoEventArgs.InstalledVersion); + + klblReleaseNotes.Text = AutoUpdaterLanguageManager.WindowStrings.ReleaseNotesText; + + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.Forced) + { + CloseBox = false; + } + } + + private void UpdateDialog_Load(object sender, EventArgs e) { } @@ -208,7 +183,7 @@ private void kbtnUpdate_Click(object sender, EventArgs e) { if (AutoUpdater.OpenDownloadPage) { - var processStartInfo = new ProcessStartInfo(_args.DownloadURL); + var processStartInfo = new ProcessStartInfo(_updateInfoEventArgs.DownloadURL); Process.Start(processStartInfo); @@ -216,7 +191,7 @@ private void kbtnUpdate_Click(object sender, EventArgs e) } else { - if (AutoUpdater.DownloadUpdate(_args)) + if (AutoUpdater.DownloadUpdate(_updateInfoEventArgs)) { DialogResult = DialogResult.OK; } @@ -225,14 +200,14 @@ private void kbtnUpdate_Click(object sender, EventArgs e) private void kbtnSkip_Click(object sender, EventArgs e) { - AutoUpdater.PersistenceProvider.SetSkippedVersion(new Version(_args.CurrentVersion)); + AutoUpdater.PersistenceProvider.SetSkippedVersion(new Version(_updateInfoEventArgs.CurrentVersion)); } private void kbtnRemind_Click(object sender, EventArgs e) { if (AutoUpdater.LetUserSelectRemindLater) { - using var remindLaterForm = new RemindLaterWindow(); + using var remindLaterForm = new RemindLaterForm(); DialogResult dialogResult = remindLaterForm.ShowDialog(this); switch (dialogResult) @@ -265,14 +240,14 @@ private void kbtnRemind_Click(object sender, EventArgs e) DialogResult = DialogResult.Cancel; } - private void UpdateWindow_FormClosed(object sender, FormClosedEventArgs e) + private void UpdateDialog_FormClosed(object sender, FormClosedEventArgs e) { AutoUpdater.Running = false; } - private void UpdateWindow_FormClosing(object sender, FormClosingEventArgs e) + private void UpdateDialog_FormClosing(object sender, FormClosingEventArgs e) { - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == UpdateMode.Forced) + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.Forced) { AutoUpdater.Exit(); } diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.resx similarity index 77% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.resx rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.resx index c24654984..fd8961f80 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.resx +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Controls Visuals/UpdateDialog.resx @@ -120,72 +120,65 @@ - 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 + RK5CYII= diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/RemindLaterFormat.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/RemindLaterFormat.cs index 2f9175723..b07561620 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/RemindLaterFormat.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/RemindLaterFormat.cs @@ -1,43 +1,15 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// Enum representing the remind later time span. public enum RemindLaterFormat { /// Represents the time span in minutes. - Minutes, + Minutes = 0, /// Represents the time span in hours. - Hours, + Hours = 1, /// Represents the time span in days. - Days + Days = 2 } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/UpdateMode.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/UpdateMode.cs index 173dcb377..e7d820e89 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/UpdateMode.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Enumerations/UpdateMode.cs @@ -1,35 +1,7 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// Enum representing the effect of Mandatory flag. - public enum UpdateMode + public enum Mode { /// In this mode, it ignores Remind Later and Skip values set previously and hide both buttons. [XmlEnum("0")] Normal, diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/AutoUpdater.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/AutoUpdater.cs index bbf9f7e8a..51fd60e15 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/AutoUpdater.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/AutoUpdater.cs @@ -1,37 +1,9 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - + using Application = System.Windows.Forms.Application; using IWin32Window = System.Windows.Forms.IWin32Window; +using MethodInvoker = System.Windows.Forms.MethodInvoker; using Size = System.Drawing.Size; using Timer = System.Timers.Timer; -using MethodInvoker = System.Windows.Forms.MethodInvoker; -// ReSharper disable InconsistentNaming namespace Krypton.Toolkit.Suite.Extended.Software.Updater { @@ -40,28 +12,31 @@ namespace Krypton.Toolkit.Suite.Extended.Software.Updater /// public static class AutoUpdater { - #region Delegates - - /// A delegate type to handle how to exit the application after update is downloaded. + /// + /// A delegate type to handle how to exit the application after update is downloaded. + /// public delegate void ApplicationExitEventHandler(); - /// A delegate type for hooking up update notifications. - /// An object containing all the parameters received from AppCast XML file. If there will be an error while looking for the XML file then this object will be null. + /// + /// A delegate type for hooking up update notifications. + /// + /// + /// An object containing all the parameters received from AppCast XML file. If there will be an error + /// while looking for the XML file then this object will be null. + /// public delegate void CheckForUpdateEventHandler(UpdateInfoEventArgs args); - /// A delegate type for hooking up parsing logic. + /// + /// A delegate type for hooking up parsing logic. + /// /// An object containing the AppCast file received from server. public delegate void ParseUpdateInfoHandler(ParseUpdateInfoEventArgs args); - #endregion - - #region Static Fields - private static bool _isWinFormsApplication; private static IWin32Window _owner; - private static Timer? _remindLaterTimer; + private static Timer _remindLaterTimer; internal static Uri BaseUri; @@ -81,7 +56,7 @@ public static class AutoUpdater /// /// Set Basic Authentication credentials to navigate to the change log URL. /// - public static IAuthentication? BasicAuthChangeLog; + public static IAuthentication BasicAuthChangeLog; /// /// Set Basic Authentication credentials required to download the file. @@ -119,11 +94,14 @@ public static class AutoUpdater /// public static string HttpUserAgent; + /// Set this to change the icon shown on updater dialog. + public static Bitmap? Icon; + /// /// If you are using a zip file as an update file then you can set this value to path where your app is installed. This /// is only necessary when your installation directory differs from your executable path. /// - public static string InstallationPath; + public static string? InstallationPath; /// /// You can set this field to your current version if you don't want to determine the version from the assembly. @@ -156,7 +134,7 @@ public static class AutoUpdater /// /// Set Proxy server to use for all the web requests in AutoUpdater.NET. /// - public static IWebProxy? Proxy; + public static IWebProxy Proxy; /// /// Remind Later interval after user should be reminded of update. @@ -194,37 +172,34 @@ public static class AutoUpdater public static bool Synchronous = false; /// - /// Set if you want the default update form to have a different size. + /// Modify TopMost property of all dialogs. + /// + public static bool TopMost = false; + + /// + /// Set this if you want the default update form to have a different size. /// public static Size? UpdateFormSize = null; /// /// Set this to any of the available modes to change behaviour of the Mandatory flag. /// - public static UpdateMode UpdateMode; - - #endregion - - #region Events + public static Mode UpdateMode; /// /// An event that developers can use to exit the application gracefully. /// - public static event ApplicationExitEventHandler? ApplicationExitEvent; + public static event ApplicationExitEventHandler ApplicationExitEvent; /// /// An event that clients can use to be notified whenever the update is checked. /// - public static event CheckForUpdateEventHandler? CheckForUpdateEvent; + public static event CheckForUpdateEventHandler CheckForUpdateEvent; /// /// An event that clients can use to be notified whenever the AppCast file needs parsing. /// - public static event ParseUpdateInfoHandler? ParseUpdateInfoEvent; - - #endregion - - #region Implementation + public static event ParseUpdateInfoHandler ParseUpdateInfoEvent; /// /// Set the owner for all dialogs. @@ -244,7 +219,7 @@ public static void SetOwner(object obj) /// Start checking for new version of application and display a dialog to the user if update is available. /// /// Assembly to use for version checking. - public static void Start(Assembly? myAssembly = null) + public static void Start(Assembly myAssembly = null) { Start(AppCastURL, myAssembly); } @@ -255,7 +230,7 @@ public static void Start(Assembly? myAssembly = null) /// FTP URL of the xml file that contains information about latest version of the application. /// Credentials required to connect to FTP server. /// Assembly to use for version checking. - public static void Start(string appCast, NetworkCredential ftpCredentials, Assembly? myAssembly = null) + public static void Start(string appCast, NetworkCredential ftpCredentials, Assembly myAssembly = null) { FtpCredentials = ftpCredentials; Start(appCast, myAssembly); @@ -266,7 +241,7 @@ public static void Start(string appCast, NetworkCredential ftpCredentials, Assem /// /// URL of the xml file that contains information about latest version of the application. /// Assembly to use for version checking. - public static void Start(string appCast, Assembly? myAssembly = null) + public static void Start(string appCast, Assembly myAssembly = null) { try { @@ -300,13 +275,13 @@ public static void Start(string appCast, Assembly? myAssembly = null) Application.EnableVisualStyles(); } - Assembly? assembly = myAssembly ?? Assembly.GetEntryAssembly(); + Assembly assembly = myAssembly ?? Assembly.GetEntryAssembly(); if (Synchronous) { try { - object? result = CheckUpdate(assembly); + object result = CheckUpdate(assembly); if (StartUpdate(result)) { @@ -352,17 +327,17 @@ public static void Start(string appCast, Assembly? myAssembly = null) } } - private static object? CheckUpdate(Assembly? mainAssembly) + private static object CheckUpdate(Assembly mainAssembly) { var companyAttribute = - (AssemblyCompanyAttribute)GetAttribute(mainAssembly, typeof(AssemblyCompanyAttribute))!; + (AssemblyCompanyAttribute)GetAttribute(mainAssembly, typeof(AssemblyCompanyAttribute)); string appCompany = companyAttribute != null ? companyAttribute.Company : ""; if (string.IsNullOrEmpty(AppTitle)) { var titleAttribute = - (AssemblyTitleAttribute)GetAttribute(mainAssembly, typeof(AssemblyTitleAttribute))!; - AppTitle = titleAttribute != null ? titleAttribute.Title : mainAssembly!.GetName().Name; + (AssemblyTitleAttribute)GetAttribute(mainAssembly, typeof(AssemblyTitleAttribute)); + AppTitle = titleAttribute != null ? titleAttribute.Title : mainAssembly.GetName().Name; } string registryLocation = !string.IsNullOrEmpty(appCompany) @@ -373,10 +348,10 @@ public static void Start(string appCast, Assembly? myAssembly = null) BaseUri = new Uri(AppCastURL); - UpdateInfoEventArgs? args; - using (MyWebClient? client = GetWebClient(BaseUri, BasicAuthXML)) + UpdateInfoEventArgs args; + using (MyWebClient client = GetWebClient(BaseUri, BasicAuthXML)) { - string xml = client!.DownloadString(BaseUri); + string xml = client.DownloadString(BaseUri); if (ParseUpdateInfoEvent == null) { @@ -392,12 +367,12 @@ public static void Start(string appCast, Assembly? myAssembly = null) } } - if (string.IsNullOrEmpty(args?.CurrentVersion) || string.IsNullOrEmpty(args?.DownloadURL)) + if (string.IsNullOrEmpty(args?.CurrentVersion) || string.IsNullOrEmpty(args.DownloadURL)) { throw new MissingFieldException(); } - args!.InstalledVersion = InstalledVersion ?? mainAssembly!.GetName().Version; + args.InstalledVersion = InstalledVersion ?? mainAssembly.GetName().Version; args.IsUpdateAvailable = new Version(args.CurrentVersion) > args.InstalledVersion; if (!Mandatory) @@ -452,7 +427,7 @@ public static void Start(string appCast, Assembly? myAssembly = null) return args; } - private static bool StartUpdate(object? result) + private static bool StartUpdate(object result) { if (result is DateTime time) { @@ -473,7 +448,7 @@ private static bool StartUpdate(object? result) { if (args.IsUpdateAvailable) { - if (Mandatory && UpdateMode == UpdateMode.ForcedDownload) + if (Mandatory && UpdateMode == Mode.ForcedDownload) { DownloadUpdate(args); Exit(); @@ -549,7 +524,7 @@ internal static void Exit() var currentProcess = Process.GetCurrentProcess(); foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName)) { - string? processPath; + string processPath; try { processPath = process.MainModule?.FileName; @@ -602,15 +577,15 @@ internal static void Exit() } } - private static Attribute? GetAttribute(Assembly? assembly, Type? attributeType) + private static Attribute GetAttribute(Assembly assembly, Type attributeType) { - object[]? attributes = assembly?.GetCustomAttributes(attributeType!, false); - if (attributes?.Length == 0) + object[] attributes = assembly.GetCustomAttributes(attributeType, false); + if (attributes.Length == 0) { return null; } - return (Attribute)attributes![0]; + return (Attribute)attributes[0]; } internal static string GetUserAgent() @@ -677,7 +652,7 @@ public static bool DownloadUpdate(UpdateInfoEventArgs args) /// public static void ShowUpdateForm(UpdateInfoEventArgs args) { - using var updateForm = new UpdateWindow(args); + using var updateForm = new UpdateDialog(args); if (UpdateFormSize.HasValue) { @@ -708,14 +683,12 @@ internal static MyWebClient GetWebClient(Uri uri, IAuthentication basicAuthentic } else { - basicAuthentication.Apply(ref webClient); + basicAuthentication?.Apply(ref webClient); - webClient!.Headers[HttpRequestHeader.UserAgent] = HttpUserAgent; + webClient.Headers[HttpRequestHeader.UserAgent] = HttpUserAgent; } return webClient; } } - - #endregion } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/BasicAuthentication.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/BasicAuthentication.cs index 16e1d0157..3ea1eba6f 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/BasicAuthentication.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/BasicAuthentication.cs @@ -1,41 +1,9 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - /// - /// Provides Basic Authentication header for web request. - /// + /// Provides Basic Authentication header for web request. public class BasicAuthentication : IAuthentication { - /// - /// Initializes credentials for Basic Authentication. - /// + /// Initializes credentials for Basic Authentication. /// Username to use for Basic Authentication /// Password to use for Basic Authentication public BasicAuthentication(string username, string password) @@ -49,10 +17,7 @@ public BasicAuthentication(string username, string password) internal string Password { get; } /// - public void Apply(ref MyWebClient? webClient) - { - webClient.Headers[HttpRequestHeader.Authorization] = ToString(); - } + public void Apply(ref MyWebClient webClient) => webClient.Headers[HttpRequestHeader.Authorization] = ToString(); /// public override string ToString() diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/CheckSum.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/CheckSum.cs new file mode 100644 index 000000000..2d9d9813b --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/CheckSum.cs @@ -0,0 +1,20 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + /// + /// Checksum class to fetch the XML values for checksum. + /// + public class CheckSum + { + /// + /// Hash of the file. + /// + [XmlText] + public string Value { get; set; } + + /// + /// Hash algorithm that generated the hash. + /// + [XmlAttribute("algorithm")] + public string HashingAlgorithm { get; set; } + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/CustomAuthentication.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/CustomAuthentication.cs index 9e6519ee1..ef2c4527a 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/CustomAuthentication.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/CustomAuthentication.cs @@ -1,36 +1,6 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - /// - /// Provides Custom Authentication header for web request. - /// + /// Provides Custom Authentication header for web request. public class CustomAuthentication : IAuthentication { /// @@ -45,15 +15,9 @@ public CustomAuthentication(string httpRequestHeaderAuthorizationValue) private string HttpRequestHeaderAuthorizationValue { get; } /// - public void Apply(ref MyWebClient? webClient) - { - webClient.Headers[HttpRequestHeader.Authorization] = ToString(); - } + public void Apply(ref MyWebClient webClient) => webClient.Headers[HttpRequestHeader.Authorization] = ToString(); /// - public override string ToString() - { - return HttpRequestHeaderAuthorizationValue; - } + public override string ToString() => HttpRequestHeaderAuthorizationValue; } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/JsonFilePersistenceProvider.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/JsonFilePersistenceProvider.cs index 9aa763186..27ff1d760 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/JsonFilePersistenceProvider.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/JsonFilePersistenceProvider.cs @@ -1,41 +1,9 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - /// - /// Provides a mechanism for storing AutoUpdater state between sessions on a Json formatted file. - /// + /// Provides a mechanism for storing AutoUpdater state between sessions on a Json formatted file. public class JsonFilePersistenceProvider : IPersistenceProvider { - /// - /// Initializes a new instance of the JsonFilePersistenceProvider class. - /// + /// Initializes a new instance of the JsonFilePersistenceProvider class. /// The path for the Json formatted file must be specified using the FileName property. public JsonFilePersistenceProvider(string jsonPath) { @@ -53,7 +21,7 @@ public JsonFilePersistenceProvider(string jsonPath) private PersistedValues PersistedValues { get; set; } /// - public Version GetSkippedVersion() + public Version? GetSkippedVersion() { return PersistedValues.SkippedVersion; } @@ -67,7 +35,7 @@ public Version GetSkippedVersion() /// public void SetSkippedVersion(Version? version) { - PersistedValues.SkippedVersion = version!; + PersistedValues.SkippedVersion = version; Save(); } diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Mandatory.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Mandatory.cs new file mode 100644 index 000000000..3f5315937 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Mandatory.cs @@ -0,0 +1,28 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + + /// + /// Mandatory class to fetch the XML values related to Mandatory field. + /// + public class Mandatory + { + /// + /// Value of the Mandatory field. + /// + [XmlText] + public bool Value { get; set; } + + /// + /// If this is set and 'Value' property is set to true then it will trigger the mandatory update only when current + /// installed version is less than value of this property. + /// + [XmlAttribute("minVersion")] + public string MinimumVersion { get; set; } + + /// + /// Mode that should be used for this update. + /// + [XmlAttribute("mode")] + public Mode UpdateMode { get; set; } + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/NetworkAuthentication.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/NetworkAuthentication.cs deleted file mode 100644 index 6c5ff6372..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/NetworkAuthentication.cs +++ /dev/null @@ -1,57 +0,0 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - /// - /// Provides credentials for Network Authentication. - /// - public class NetworkAuthentication : IAuthentication - { - /// - /// Initializes credentials for Network Authentication. - /// - /// Username to use for Network Authentication - /// Password to use for Network Authentication - public NetworkAuthentication(string username, string password) - { - Username = username; - Password = password; - } - - private string Username { get; } - - private string Password { get; } - - /// - public void Apply(ref MyWebClient? webClient) - { - webClient.Credentials = new NetworkCredential(Username, Password); - } - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/ParseUpdateInfoEventArgs.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/ParseUpdateInfoEventArgs.cs index ab75776e0..65f42cb38 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/ParseUpdateInfoEventArgs.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/ParseUpdateInfoEventArgs.cs @@ -1,32 +1,4 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// An object of this class contains the AppCast file received from server. @@ -50,6 +22,6 @@ public ParseUpdateInfoEventArgs(string remoteData) /// /// Set this object with values received from the AppCast file. /// - public UpdateInfoEventArgs? UpdateInfo { get; set; } + public UpdateInfoEventArgs UpdateInfo { get; set; } } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/PasteArguments.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/PasteArguments.cs new file mode 100644 index 000000000..8c657805d --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/PasteArguments.cs @@ -0,0 +1,85 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + internal static class PasteArguments + { + private const char Quote = '\"'; + private const char Backslash = '\\'; + + internal static void AppendArgument(ref StringBuilder stringBuilder, string? argument) + { + if (stringBuilder.Length != 0) + { + stringBuilder.Append(' '); + } + + // Parsing rules for non-argv[0] arguments: + // - Backslash is a normal character except followed by a quote. + // - 2N backslashes followed by a quote ==> N literal backslashes followed by unescaped quote + // - 2N+1 backslashes followed by a quote ==> N literal backslashes followed by a literal quote + // - Parsing stops at first whitespace outside of quoted region. + // - (post 2008 rule): A closing quote followed by another quote ==> literal quote, and parsing remains in quoting mode. + if (argument.Length != 0 && ContainsNoWhitespaceOrQuotes(argument)) + { + // Simple case - no quoting or changes needed. + stringBuilder.Append(argument); + } + else + { + stringBuilder.Append(Quote); + var idx = 0; + while (idx < argument.Length) + { + char c = argument[idx++]; + switch (c) + { + case Backslash: + { + var numBackSlash = 1; + while (idx < argument.Length && argument[idx] == Backslash) + { + idx++; + numBackSlash++; + } + + if (idx == argument.Length) + { + // We'll emit an end quote after this so must double the number of backslashes. + stringBuilder.Append(Backslash, numBackSlash * 2); + } + else if (argument[idx] == Quote) + { + // Backslashes will be followed by a quote. Must double the number of backslashes. + stringBuilder.Append(Backslash, numBackSlash * 2 + 1); + stringBuilder.Append(Quote); + idx++; + } + else + { + // Backslash will not be followed by a quote, so emit as normal characters. + stringBuilder.Append(Backslash, numBackSlash); + } + + continue; + } + case Quote: + // Escape the quote so it appears as a literal. This also guarantees that we won't end up generating a closing quote followed + // by another quote (which parses differently pre-2008 vs. post-2008.) + stringBuilder.Append(Backslash); + stringBuilder.Append(Quote); + continue; + default: + stringBuilder.Append(c); + break; + } + } + + stringBuilder.Append(Quote); + } + } + + private static bool ContainsNoWhitespaceOrQuotes(string? s) + { + return s.All(c => !char.IsWhiteSpace(c) && c != Quote); + } + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/PersistedValues.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/PersistedValues.cs index f361a3c14..4d687f4ff 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/PersistedValues.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/PersistedValues.cs @@ -1,32 +1,4 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// Provides way to serialize and deserialize AutoUpdater persisted values. @@ -39,7 +11,7 @@ public class PersistedValues /// /// The SetSkippedVersion function sets this property and calls the Save() method for making changes permanent. [DataMember] - public Version SkippedVersion { get; set; } + public Version? SkippedVersion { get; set; } /// /// Date and time at which the user must be given again the possibility to upgrade the application. diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/RegistryPersistenceProvider.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/RegistryPersistenceProvider.cs index 2a92f0a9b..0b78ff885 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/RegistryPersistenceProvider.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/RegistryPersistenceProvider.cs @@ -1,41 +1,13 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// Provides a mechanism for storing AutoUpdater state between sessions based on storing data on the Windows Registry. /// public class RegistryPersistenceProvider : IPersistenceProvider { - private const string REMIND_LATER_VALUE_NAME = "RemindLaterAt"; + private const string RemindLaterValueName = "RemindLaterAt"; - private const string SKIPPED_VERSION_VALUE_NAME = "SkippedVersion"; + private const string SkippedVersionValueName = "SkippedVersion"; /// /// Initializes a new instance of the RegistryPersistenceProvider class indicating the path for the Windows registry @@ -57,8 +29,8 @@ public RegistryPersistenceProvider(string registryLocation) { try { - using RegistryKey? updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation); - object? skippedVersionValue = updateKey?.GetValue(SKIPPED_VERSION_VALUE_NAME); + using RegistryKey updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation); + object skippedVersionValue = updateKey?.GetValue(SkippedVersionValueName); if (skippedVersionValue != null) { @@ -77,8 +49,8 @@ public RegistryPersistenceProvider(string registryLocation) /// public DateTime? GetRemindLater() { - using RegistryKey? updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation); - object? remindLaterValue = updateKey?.GetValue(REMIND_LATER_VALUE_NAME); + using RegistryKey updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation); + object remindLaterValue = updateKey?.GetValue(RemindLaterValueName); if (remindLaterValue == null) { @@ -101,15 +73,15 @@ public RegistryPersistenceProvider(string registryLocation) /// public void SetSkippedVersion(Version? version) { - using RegistryKey? autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation); - autoUpdaterKey?.SetValue(SKIPPED_VERSION_VALUE_NAME, version != null ? version.ToString() : string.Empty); + using RegistryKey autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation); + autoUpdaterKey?.SetValue(SkippedVersionValueName, version != null ? version.ToString() : string.Empty); } /// public void SetRemindLater(DateTime? remindLaterAt) { - using RegistryKey? autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation); - autoUpdaterKey?.SetValue(REMIND_LATER_VALUE_NAME, + using RegistryKey autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation); + autoUpdaterKey?.SetValue(RemindLaterValueName, remindLaterAt != null ? remindLaterAt.Value.ToString(CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat) : string.Empty); diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/UpdateInfoEventArgs.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/UpdateInfoEventArgs.cs index 2a1994a74..7fac682de 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/UpdateInfoEventArgs.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/UpdateInfoEventArgs.cs @@ -1,32 +1,4 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// Object of this class gives you all the details about the update useful in handling the update logic yourself. @@ -107,7 +79,7 @@ public string ChangelogURL /// Checksum of the update file. /// [XmlElement("checksum")] - public CheckSum? CheckSum { get; set; } + public CheckSum CheckSum { get; set; } internal static string GetURL(Uri baseUri, string url) { @@ -124,47 +96,4 @@ internal static string GetURL(Uri baseUri, string url) return url; } } - - /// - /// Mandatory class to fetch the XML values related to Mandatory field. - /// - public class Mandatory - { - /// - /// Value of the Mandatory field. - /// - [XmlText] - public bool Value { get; set; } - - /// - /// If this is set and 'Value' property is set to true then it will trigger the mandatory update only when current - /// installed version is less than value of this property. - /// - [XmlAttribute("minVersion")] - public string MinimumVersion { get; set; } - - /// - /// Mode that should be used for this update. - /// - [XmlAttribute("mode")] - public UpdateMode UpdateMode { get; set; } - } - - /// - /// Checksum class to fetch the XML values for checksum. - /// - public class CheckSum - { - /// - /// Hash of the file. - /// - [XmlText] - public string Value { get; set; } - - /// - /// Hash algorithm that generated the hash. - /// - [XmlAttribute("algorithm")] - public string HashingAlgorithm { get; set; } - } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Utilities.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Utilities.cs index 39127cc62..feab2dd19 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Utilities.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Utilities.cs @@ -1,34 +1,6 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - internal static class Utils + internal static class Utilities { public static string BuildArguments(Collection argumentList) { @@ -42,87 +14,4 @@ public static string BuildArguments(Collection argumentList) return arguments.ToString(); } } - - internal static class PasteArguments - { - private const char QUOTE = '\"'; - private const char BACKSLASH = '\\'; - - internal static void AppendArgument(ref StringBuilder stringBuilder, string? argument) - { - if (stringBuilder.Length != 0) - { - stringBuilder.Append(' '); - } - - // Parsing rules for non-argv[0] arguments: - // - Backslash is a normal character except followed by a quote. - // - 2N backslashes followed by a quote ==> N literal backslashes followed by unescaped quote - // - 2N+1 backslashes followed by a quote ==> N literal backslashes followed by a literal quote - // - Parsing stops at first whitespace outside of quoted region. - // - (post 2008 rule): A closing quote followed by another quote ==> literal quote, and parsing remains in quoting mode. - if (argument.Length != 0 && ContainsNoWhitespaceOrQuotes(argument)) - { - // Simple case - no quoting or changes needed. - stringBuilder.Append(argument); - } - else - { - stringBuilder.Append(QUOTE); - var idx = 0; - while (idx < argument.Length) - { - char c = argument[idx++]; - switch (c) - { - case BACKSLASH: - { - var numBackSlash = 1; - while (idx < argument.Length && argument[idx] == BACKSLASH) - { - idx++; - numBackSlash++; - } - - if (idx == argument.Length) - { - // We'll emit an end quote after this so must double the number of backslashes. - stringBuilder.Append(BACKSLASH, numBackSlash * 2); - } - else if (argument[idx] == QUOTE) - { - // Backslashes will be followed by a quote. Must double the number of backslashes. - stringBuilder.Append(BACKSLASH, numBackSlash * 2 + 1); - stringBuilder.Append(QUOTE); - idx++; - } - else - { - // Backslash will not be followed by a quote, so emit as normal characters. - stringBuilder.Append(BACKSLASH, numBackSlash); - } - - continue; - } - case QUOTE: - // Escape the quote so it appears as a literal. This also guarantees that we won't end up generating a closing quote followed - // by another quote (which parses differently pre-2008 vs. post-2008.) - stringBuilder.Append(BACKSLASH); - stringBuilder.Append(QUOTE); - continue; - default: - stringBuilder.Append(c); - break; - } - } - - stringBuilder.Append(QUOTE); - } - } - - private static bool ContainsNoWhitespaceOrQuotes(string? s) - { - return s.All(c => !char.IsWhiteSpace(c) && c != QUOTE); - } - } -} \ No newline at end of file +} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Wpf32Window.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Wpf32Window.cs index a0586af86..64888587e 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Wpf32Window.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/General/Wpf32Window.cs @@ -1,32 +1,4 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -using IWin32Window = System.Windows.Forms.IWin32Window; +using IWin32Window = System.Windows.Forms.IWin32Window; namespace Krypton.Toolkit.Suite.Extended.Software.Updater { diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IAuthentication.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IAuthentication.cs index cfe68071d..d1c6edb4f 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IAuthentication.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IAuthentication.cs @@ -1,38 +1,10 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// Interface for authentication. public interface IAuthentication { /// Apply the authentication to webclient. /// WebClient for which you want to use this authentication method. - void Apply(ref MyWebClient? webClient); + void Apply(ref MyWebClient webClient); } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IPersistenceProvider.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IPersistenceProvider.cs index 44ee2f21e..2b6842cb3 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IPersistenceProvider.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/Interfaces/IPersistenceProvider.cs @@ -1,32 +1,4 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// Provides a mechanism for storing AutoUpdater state between sessions. diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.resx deleted file mode 100644 index b791cc9f1..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/DownloadUpdateDialog.resx +++ /dev/null @@ -1,338 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - iVBORw0KGgoAAAANSUhEUgAAAecAAABqCAYAAACGVJnmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJCSURBVHhe7dixbcRADABBt6sa3YPLcBtviIAz5txggsH/ - iQUsyK/neT6v75/f+fX29vb29va+fU+c3z8AwL23y1/bAAC4MXG2OQNAhzgDQJA4A0DIbM7bAAC44awN - ADHiDABB4gwAIbM5bwMA4IazNgDEiDMABIkzAITM5rwNAIAbztoAECPOABAkzgAQMpvzNgAAbjhrA0CM - OANAkDgDQMhsztsAALjhrA0AMeIMAEHiDAAhszlvAwDghrM2AMSIMwAEiTMAhMzmvA0AgBvO2gAQI84A - ECTOABAym/M2AABuOGsDQIw4A0CQOANAyGzO2wAAuOGsDQAx4gwAQeIMACGzOW8DAOCGszYAxIgzAASJ - MwCEzOa8DQCAG87aABAjzgAQJM4AEDKb8zYAAG44awNAjDgDQJA4A0DIbM7bAAC44awNADHiDABB4gwA - IbM5bwMA4IazNgDEiDMABIkzAITM5rwNAIAbztoAECPOABAkzgAQMpvzNgAAbjhrA0CMOANAkDgDQMhs - ztsAALjhrA0AMeIMAEHiDAAhszlvAwDghrM2AMSIMwAEiTMAhMzmvA0AgBvO2gAQI84AECTOABAym/M2 - AABuOGsDQIw4A0CQOANAyGzO2wAAuOGsDQAx4gwAQeIMACGzOW8DAOCGszYAxIgzAASJMwCEzOa8DQCA - G87aABAjzgAQJM4AEDKb8zYAAG44awNAjDgDQJA4A0DIbM7bAAC44awNADHiDABBE+d/7wdvb29vb2/v - y/fz+QMdbpRq6Lt8mwAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAZsAAABkCAYAAABQK52AAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJYSURBVHhe7dmxTURREARBkr+oyIEwSOPQ4SHdeL0WZZTg - Y2CM01q9j8fj8Xz5/Pr+/en7vfr/+/bt2/d/+v6NzesX/rILQOfj3R8RG4CSywaAc2Iz2AWgIzaDXQA6 - 3mwGsQHouGwAOCc2g10AOmIz2AWg481mEBuAjssGgHNiM9gFoCM2g10AOt5sBrEB6LhsADgnNoNdADpi - M9gFoOPNZhAbgI7LBoBzYjPYBaAjNoNdADrebAaxAei4bAA4JzaDXQA6YjPYBaDjzWYQG4COywaAc2Iz - 2AWgIzaDXQA63mwGsQHouGwAOCc2g10AOmIz2AWg481mEBuAjssGgHNiM9gFoCM2g10AOt5sBrEB6Lhs - ADgnNoNdADpiM9gFoOPNZhAbgI7LBoBzYjPYBaAjNoNdADrebAaxAei4bAA4JzaDXQA6YjPYBaDjzWYQ - G4COywaAc2Iz2AWgIzaDXQA63mwGsQHouGwAOCc2g10AOmIz2AWg481mEBuAjssGgHNiM9gFoCM2g10A - Ot5sBrEB6LhsADgnNoNdADpiM9gFoOPNZhAbgI7LBoBzYjPYBaAjNoNdADrebAaxAei4bAA4JzaDXQA6 - YjPYBaDjzWYQG4COywaAc2Iz2AWgIzaDXQA63mwGsQHouGwAOCc2g10AOmIz2AWg481mEBuAjssGgHNi - M9gFoCM2g10AOt5sBrEB6LhsADgnNoNdADpiM9gFoOPNZhAbgI7LBoBzYjPYBaAjNoNdADrebAaxAei4 - bAA4JzaDXQA6YjPYBaAjNoNdADpiA8Cx7+cPw6MvlGnjiuUAAAAASUVORK5CYII= - - - - - AAABAAIAEBAAAAAAIABoBAAAJgAAADAwAAAAACAAqCUAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE - AADXDQAA1w0AAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AABczlIAXM5i////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczg8BXs/tAV3P9ABc - zhf///8A////AP///wD///8A////AP///wD///8A////AABczmIAXM5rAFzOMwBczgUAXc+fDW3a9xBx - 3fkBXtCwAFzOAwBczjAAXM5nAFzOb////wD///8A////AP///wAAXM50A1/Q/Adi0PoBXs/6A1/Q+h+I - 8v8givP/BWHR+QFez/kGYdD7BGHR/ABczoz///8A////AP///wD///8AAFzOPAVh0fcji/b/I4fw/yCF - 7v8Xhfb/E4P2/yGF7/8ih/D/I4v2/whl1PMAXM5Q////AP///wD///8A////AABczgkAXM78K43y/xWG - 9v8Thfb/a7T6/2q0+v8Thfb/EoT1/y+S9f8BXc7+AFzOFv///wD///8A////AABczhUAXc+nB2LQ+jST - 8f8fjff/bbf7/83q///N6v//bbf7/xmK9v83lvT/CmTS+QFe0LMAXM4a////AABczmMCXs/zIHrf+EWf - 9v80mvj/crr7/83q///N6v//zer//83q//9xuvv/MZj4/0ah9v8lf+H6Al7P9gBczm8AXM5jAV3P8yJ7 - 3/hOpvf/QaL5/x+S+P8bkPj/zer//83q//8bkPj/HZH4/z2h+f9QqPf/JoDi+gJez/YAXM5v////AABc - zhUBXs+nCGPR+lKm9P85ofn/IZb4/83q///N6v//IZb4/zKe+f9Xq/X/C2XT+QJf0LMAXM4a////AP// - /wD///8AAFzOCQBdzvxisvb/Qaj6/0Cn+v+/5P7/v+T+/0Cn+v8+pvr/aLj5/wNez/4AXM4W////AP// - /wD///8A////AABczjwQaNP3dcH8/2y49v9ms/T/Xrf7/1e0+/9otPX/a7f2/3TB+/8cc9j0AFzOUP// - /wD///8A////AP///wAAXM50CmPR/BJp0/oCXs/6CmTR+nG9+f90wPr/EGjS+QFdz/kPZ9L7DWbS/ABc - zoz///8A////AP///wD///8AAFzOYgBczmsAXM4zAFzOBQJfz54xhd/4PI7j+QJf0LAAXM4DAFzOMABc - zmcAXM5v////AP///wD///8A////AP///wD///8A////AP///wAAXM4PAl/P7QRfz/QAXM4X////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczlAAXM5g////AP// - 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 - 9f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/xmI9/8df+n/AF3O1gAAAAsAAAAIAAAABQAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAABABZyG8Ladj1KI/2/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/yGL9v8Uc9/8AFnHlwAAAAkAAAAGAAAABAAAAAIAAAABAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwBWwjUCXs/8LZD2/wd9 - 9f8BevX/AXn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/xSF9v8AefX/AHn1/wB5 - 9f8AefX/AHn1/wB59f8BefX/AXn1/wF69f8BevX/Anv1/yuQ9/8KZtX1AFfCXAAAAAYAAAAEAAAAAwAA - AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgA1 - dwcAXM/4KIrw/xSE9v8De/X/A3v1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/RaT6/43P - /v9NqPn/A3z1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/A3v1/wN79f8De/X/C3/1/y+R9P8CXc7/AE6vIwAA - AAQAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAXc/IIH/o/yCL9/8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/BX32/wuA - 9v9gtPv/jtD+/47Q/v+O0P7/YLT7/wmA9v8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/GYf3/ymJ - 7v8AXc/tAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAXM2XGHTe+iyS9/8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/F4j3/3TA/P+O0P7/jtD+/47Q/v+O0P7/jtD+/2+9/P8Rhff/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/I473/yJ/5v8AXc7EAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOFABdz6YHYdD8Lojo/iKO9/8Jgfb/CYH2/wmB - 9v8Jgfb/CYH2/wmB9v8plPj/g8n9/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v96xf3/HIz3/wmB - 9v8Jgfb/CYH2/wmB9v8Jgfb/GIn3/zWP7f8LZdL6AF3PwQBcziIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM5fAV7P8hx02/k7l/P/LJT3/w+E - 9v8Mg/b/DIP2/wyD9v8Mg/b/DIP2/0Ci+v+Lz/7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/hMr9/ymU+P8Mg/b/DIP2/wyD9v8Mg/b/DYP2/yeR9/89mfX/I3zf+wNf0PoAXM54AFzOBAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJQFe0MUMZdL5NI3r/zyc - +f8djfj/DoX3/w6F9/8Ohff/DoX3/w6F9/8Qhvf/WbH7/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/4rN/v85nvr/DoX3/w6F9/8Ohff/DoX3/w6F9/8Xivf/OJr4/zqT - 7/8TbNX4AV7Q2ABczjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczgUAXc9+Al7P+yZ+ - 4PxEnvb/Lpb4/xKI9/8Qh/f/EIf3/xCH9/8Qh/f/EIf3/xiM+P9qvPz/is7+/4rO/v+Lz/7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/i8/+/4rO/v+Kzv7/Rqf6/xCH9/8Qh/f/EIf3/xCH - 9/8Qh/f/EIf3/yeT+P9Dn/f/LYXl/QZgz/0AXc+VAFzODQAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOOwFe - 0N0TbNb4Ppjw/z+f+f8dj/f/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ - 9/89ovr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/OZ/6/xKJ9/8Siff/Eon3/xKJ - 9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8ZjPf/OJz4/0Oc8/8cdNn5AV3P6wBczk4AAAAAAAAAAAAA - AAAAXM4QAFzOzQNez/44k+7/Taf5/y2X+P8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL - 9/8Vi/f/FYv3/xWL9/8/o/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/O6D6/xWL - 9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/JJL4/0ml+f9AmfH/CmTS/QBd - z98AXM4iAAAAAAAAAAAAAAAAAFzOAwBcznIAXc/4Hnnf+kqk9/9Dovn/H5H4/xeN+P8Xjfj/F434/xeN - +P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P9ApPr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/PaL6/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xyP+P86nvn/Tqf4/yiD - 5PsBXs/7AF3PiABczgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4eAV7PuAZh0fk2j+v/Uqv6/zWd - +f8aj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P9Bpvr/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/PqP6/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/Lpn5/06p - +v9AmO//DGbT+AFe0M4AXM4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABc - zlIBXs/rGXPa+E2k9P9Nqfr/KJf4/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/xyR+P9Dp/r/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKX6/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/yOU - +P9Hpvn/Uqj2/yN83voBXc/1AFzOaQBczgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM4NAV3PlgNf0Pwyi+b9WK75/zGc+f8ek/j/HpP4/x6T+P8ek/j/HpP4/x6T - +P9Ep/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKb6/x6T+P8ek/j/HpP4/x6T - +P8ek/j/J5f4/1iu+v89k+v/CGLQ+wFe0LAAXM4ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczjUBXtDcLoLg+0yq+v8glfn/IJX5/yCV - +f8glfn/IJX5/yCV+f8sm/r/i87+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+Jzf7/KZn5/yCV - +f8glfn/IJX5/yCV+f8glfn/QKT6/z+R5/8BXs/tAFzOSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXc+hMYnl/U6s - +v8il/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/K5z5/z2l+/89pfv/PaX7/z2l+/89pfv/PaX7/z2l - +v8pm/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/Qqb6/0KX7P8CX9DPAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAACX9DhSZ7u/0Sn+v8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ - +f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/OKL6/1qr9P8AXc77AFzOBgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczhIAXM7+YLH3/zij+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb - +f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/K535/2e4 - +v8LZNH7AFzONwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczksQadP4arv8/yyf+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/2C2+/8le9z3AFzOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczoUsg+D6Yrf7/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/1Wy+/8+k+f/Al7QrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJf0MlGm+v/VrP7/y6h - +v8uofr/LqH6/y6h+v8wovr/Paj6/0es+/80pPr/LqH6/y6h+v8uofr/LqH6/y6h+v8uofr/LqH6/y6h - +v8wovr/Rav7/z+p+v8xovr/LqH6/y6h+v8uofr/LqH6/0mt+/9ZqfH/Al7Q6gAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOBAFd - z/lhsfT/Sa77/zam+v9Grfv/VbT7/2W6+/9xv/r/arT0/1ul7P9vu/j/Q6z6/zCj+v8wo/r/MKP6/zCj - +v8wo/r/MKP6/zmn+v9vvfr/XKXs/2ay8/9xvvr/aLz7/1m1+/9Kr/v/O6j6/z2p+v9wvfn/A17P/wBc - zhsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAFzOMwZg0Px2wvz/csH8/3K9+P9irvH/SJfn/S1+2/YSaNH+A1/P8wFez+M1iOH6br/8/zWm - +/8ypfv/MqX7/zKl+/8ypfv/MqX7/2W7/P9JmOj9Al/P6wJez+4OZdH/J3ra9kWU5vxeqvD/crv4/3TC - /P93w/z/GXDW9wBczlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzObRBo0/w9jOL4H3LW+Qhh0P0DYNDaAV3PmgBczl8AXM4nAFzOAQBc - zhgCX8/1X63x/1q3/P81p/v/Naf7/zWn+/81p/v/TrL7/2249f8IYdD8AFzOMwAAAAAAXM4eAFzOVwBd - zpEDYNDTB2HP+xtv1fo4ieD3HnTX/QBdzo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOkwJf0LoAXM56AFzOQQBczgwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM5jFmzU+HfC+v9Er/v/N6n7/zep+/88q/v/dML8/yl82/gBXc+NAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzOBwBczjoAXM5yAl/QsgBdzrEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl/QxkOV5vxvwvz/Oqv7/zmr+/9jvfz/WKTs/gJf - z+QAXM4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJAVg0PltuPX/Wbn8/020 - /P92wPj/DmbR+wBczkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFd - zngjeNn4e8f8/3fH/f84iOD4Al7PowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczgQCX9DXUqHr/WSv8f8EX8/vAFzOEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4zCmTR+xZr1PkAXM5XAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV7PjwJfz7kAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAD/AAD/wAAAAD8AAP+A - AAAAHwAA/wAAAAAPAAD+AAAAAAcAAPwAAAAAAwAA/AAAAAADAAD8AAAAAAMAAPgAAAAAAQAA+AAAAAAB - AAD4AAAAAAEAAPgAAAAAAQAA/AAAAAADAAD8AAAAAAMAAPwAAAAAAwAA/gAAAAAHAAD/AAAAAA8AAP+A - AAAAHwAA/8AAAAA/AAD/gAAAAH8AAP8AAAAAHwAA/AAAAAAPAADwAAAAAAMAAOAAAAAAAQAAwAAAAAAA - AADgAAAAAAEAAPgAAAAABwAA/gAAAAAPAAD/AAAAAD8AAP/AAAAA/wAA/+AAAAH/AAD/4AAAAP8AAP/A - AAAA/wAA/8AAAAD/AAD/wAAAAP8AAP/AAAAA/wAA/4AAAAB/AAD/gAAAAH8AAP+AAAEAfwAA/4PwA/B/ - AAD///gD//8AAP//+Af//wAA///8D///AAD///wP//8AAP///h///wAA////P///AAD///////8AAP// - /////wAA - - - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.Designer.cs deleted file mode 100644 index eb7f4c98a..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.Designer.cs +++ /dev/null @@ -1,198 +0,0 @@ -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - partial class ReducedUpdateWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ReducedUpdateWindow)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.kwlHeader = new Krypton.Toolkit.KryptonWrapLabel(); - this.kwlDescription = new Krypton.Toolkit.KryptonWrapLabel(); - this.kbtnSkip = new Krypton.Toolkit.KryptonButton(); - this.kbtnRemind = new Krypton.Toolkit.KryptonButton(); - this.kbtnUpdate = new Krypton.Toolkit.KryptonButton(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kryptonTableLayoutPanel1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(697, 110); - this.kryptonPanel1.TabIndex = 1; - // - // kryptonTableLayoutPanel1 - // - this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); - this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel1.ColumnCount = 4; - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.kryptonTableLayoutPanel1.Controls.Add(this.pictureBox1, 0, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlHeader, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlDescription, 1, 1); - this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnSkip, 1, 2); - this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnRemind, 2, 2); - this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnUpdate, 3, 2); - this.kryptonTableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; - this.kryptonTableLayoutPanel1.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.kryptonTableLayoutPanel1.RowCount = 3; - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(697, 110); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // pictureBox1 - // - this.pictureBox1.BackColor = System.Drawing.Color.Transparent; - this.pictureBox1.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.update_48_x_48; - this.pictureBox1.Location = new System.Drawing.Point(8, 8); - this.pictureBox1.Name = "pictureBox1"; - this.kryptonTableLayoutPanel1.SetRowSpan(this.pictureBox1, 2); - this.pictureBox1.Size = new System.Drawing.Size(64, 64); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; - // - // kwlHeader - // - this.kwlHeader.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlHeader, 3); - this.kwlHeader.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlHeader.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold); - this.kwlHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlHeader.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlHeader.Location = new System.Drawing.Point(78, 5); - this.kwlHeader.Name = "kwlHeader"; - this.kwlHeader.Size = new System.Drawing.Size(616, 23); - this.kwlHeader.StateCommon.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold); - this.kwlHeader.Text = "kryptonWrapLabel1"; - // - // kwlDescription - // - this.kwlDescription.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlDescription, 3); - this.kwlDescription.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlDescription.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDescription.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlDescription.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlDescription.Location = new System.Drawing.Point(78, 28); - this.kwlDescription.Name = "kwlDescription"; - this.kwlDescription.Size = new System.Drawing.Size(616, 47); - this.kwlDescription.StateCommon.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDescription.Text = "kryptonWrapLabel2"; - // - // kbtnSkip - // - this.kbtnSkip.AutoSize = true; - this.kbtnSkip.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.kbtnSkip.Dock = System.Windows.Forms.DockStyle.Left; - this.kbtnSkip.Location = new System.Drawing.Point(78, 78); - this.kbtnSkip.Name = "kbtnSkip"; - this.kbtnSkip.Size = new System.Drawing.Size(133, 29); - this.kbtnSkip.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnSkip.TabIndex = 3; - this.kbtnSkip.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.hand_point; - this.kbtnSkip.Values.Text = "kryptonButton1"; - this.kbtnSkip.Click += new System.EventHandler(this.kbtnSkip_Click); - // - // kbtnRemind - // - this.kbtnRemind.AutoSize = true; - this.kbtnRemind.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.kbtnRemind.Dock = System.Windows.Forms.DockStyle.Right; - this.kbtnRemind.Location = new System.Drawing.Point(353, 78); - this.kbtnRemind.Name = "kbtnRemind"; - this.kbtnRemind.Size = new System.Drawing.Size(133, 29); - this.kbtnRemind.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnRemind.TabIndex = 4; - this.kbtnRemind.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.clock_go; - this.kbtnRemind.Values.Text = "kryptonButton2"; - this.kbtnRemind.Click += new System.EventHandler(this.kbtnRemind_Click); - // - // kbtnUpdate - // - this.kbtnUpdate.AutoSize = true; - this.kbtnUpdate.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.kbtnUpdate.Dock = System.Windows.Forms.DockStyle.Right; - this.kbtnUpdate.Location = new System.Drawing.Point(561, 78); - this.kbtnUpdate.Name = "kbtnUpdate"; - this.kbtnUpdate.Size = new System.Drawing.Size(133, 29); - this.kbtnUpdate.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnUpdate.TabIndex = 5; - this.kbtnUpdate.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.download; - this.kbtnUpdate.Values.Text = "kryptonButton3"; - this.kbtnUpdate.Click += new System.EventHandler(this.kbtnUpdate_Click); - // - // ReducedUpdateWindow - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(697, 110); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ReducedUpdateWindow"; - this.Text = "ReducedUpdateWindow"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ReducedUpdateWindow_FormClosing); - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ReducedUpdateWindow_FormClosed); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private KryptonPanel kryptonPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pictureBox1; - private KryptonWrapLabel kwlHeader; - private KryptonWrapLabel kwlDescription; - private KryptonButton kbtnSkip; - private KryptonButton kbtnRemind; - private KryptonButton kbtnUpdate; - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.cs deleted file mode 100644 index 420e5f518..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/ReducedUpdateWindow.cs +++ /dev/null @@ -1,143 +0,0 @@ -#region License - -/* - * MIT License - * - * Copyright (c) 2012 - 2023 RBSoft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - public partial class ReducedUpdateWindow : KryptonForm - { - #region Instance Fields - - private readonly UpdateInfoEventArgs _args; - - #endregion - - public ReducedUpdateWindow(UpdateInfoEventArgs args) - { - InitializeComponent(); - - _args = args; - - kbtnSkip.Visible = AutoUpdater.ShowSkipButton; - - kbtnRemind.Visible = AutoUpdater.ShowRemindLaterButton; - - Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.WindowTitle, AutoUpdater.AppTitle, - _args.CurrentVersion); - - kwlHeader.Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.HeaderText, AutoUpdater.AppTitle); - - kwlDescription.Text = string.Format(AutoUpdaterLanguageManager.WindowStrings.Description, AutoUpdater.AppTitle, - _args.CurrentVersion, _args.InstalledVersion); - - kbtnRemind.Text = AutoUpdaterLanguageManager.WindowStrings.RemindLaterButtonText; - - kbtnSkip.Text = AutoUpdaterLanguageManager.WindowStrings.SkipButtonText; - - kbtnUpdate.Text = AutoUpdaterLanguageManager.WindowStrings.UpdateButtonText; - - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == UpdateMode.Forced) - { - ControlBox = false; - } - } - - private void kbtnSkip_Click(object sender, EventArgs e) - { - if (AutoUpdater.LetUserSelectRemindLater) - { - using var remindLaterForm = new RemindLaterWindow(); - DialogResult dialogResult = remindLaterForm.ShowDialog(this); - - switch (dialogResult) - { - case DialogResult.OK: - AutoUpdater.RemindLaterTimeSpan = remindLaterForm.RemindLaterFormat; - AutoUpdater.RemindLaterAt = remindLaterForm.RemindLaterAt; - break; - case DialogResult.Abort: - kbtnUpdate_Click(sender, e); - return; - default: - return; - } - } - - AutoUpdater.PersistenceProvider.SetSkippedVersion(null); - - DateTime remindLaterDateTime = AutoUpdater.RemindLaterTimeSpan switch - { - RemindLaterFormat.Days => DateTime.Now + TimeSpan.FromDays(AutoUpdater.RemindLaterAt), - RemindLaterFormat.Hours => DateTime.Now + TimeSpan.FromHours(AutoUpdater.RemindLaterAt), - RemindLaterFormat.Minutes => DateTime.Now + TimeSpan.FromMinutes(AutoUpdater.RemindLaterAt), - _ => DateTime.Now - }; - - AutoUpdater.PersistenceProvider.SetRemindLater(remindLaterDateTime); - AutoUpdater.SetTimer(remindLaterDateTime); - - DialogResult = DialogResult.Cancel; - } - - private void kbtnRemind_Click(object sender, EventArgs e) - { - AutoUpdater.PersistenceProvider.SetSkippedVersion(new Version(_args.CurrentVersion)); - } - - private void kbtnUpdate_Click(object sender, EventArgs e) - { - if (AutoUpdater.OpenDownloadPage) - { - var processStartInfo = new ProcessStartInfo(_args.DownloadURL); - - Process.Start(processStartInfo); - - DialogResult = DialogResult.OK; - } - else - { - if (AutoUpdater.DownloadUpdate(_args)) - { - DialogResult = DialogResult.OK; - } - } - } - - private void ReducedUpdateWindow_FormClosed(object sender, FormClosedEventArgs e) - { - AutoUpdater.Running = false; - } - - private void ReducedUpdateWindow_FormClosing(object sender, FormClosingEventArgs e) - { - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == UpdateMode.Forced) - { - AutoUpdater.Exit(); - } - } - } -} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.Designer.cs deleted file mode 100644 index 7a6a7720c..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Auto Updater/UX/UpdateWindow.Designer.cs +++ /dev/null @@ -1,267 +0,0 @@ -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - partial class UpdateWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UpdateWindow)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pbxApplicationIcon = new System.Windows.Forms.PictureBox(); - this.kwlHeader = new Krypton.Toolkit.KryptonWrapLabel(); - this.kwlDetails = new Krypton.Toolkit.KryptonWrapLabel(); - this.kwlReleaseNotes = new Krypton.Toolkit.KryptonWrapLabel(); - this.kbtnSkip = new Krypton.Toolkit.KryptonButton(); - this.kbtnRemind = new Krypton.Toolkit.KryptonButton(); - this.kbtnUpdate = new Krypton.Toolkit.KryptonButton(); - this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); - this.wvReleaseNotes = new Microsoft.Web.WebView2.WinForms.WebView2(); - this.kwbReleaseNotes = new Krypton.Toolkit.KryptonWebBrowser(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); - this.kryptonPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.wvReleaseNotes)).BeginInit(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kryptonTableLayoutPanel1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(693, 661); - this.kryptonPanel1.TabIndex = 1; - // - // kryptonTableLayoutPanel1 - // - this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); - this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel1.ColumnCount = 4; - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); - this.kryptonTableLayoutPanel1.Controls.Add(this.pbxApplicationIcon, 0, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlHeader, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlDetails, 1, 1); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlReleaseNotes, 1, 2); - this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnSkip, 1, 4); - this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnRemind, 2, 4); - this.kryptonTableLayoutPanel1.Controls.Add(this.kbtnUpdate, 3, 4); - this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonPanel2, 1, 3); - this.kryptonTableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; - this.kryptonTableLayoutPanel1.RowCount = 5; - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(693, 661); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // pbxApplicationIcon - // - this.pbxApplicationIcon.BackColor = System.Drawing.Color.Transparent; - this.pbxApplicationIcon.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.update2; - this.pbxApplicationIcon.Location = new System.Drawing.Point(3, 3); - this.pbxApplicationIcon.Name = "pbxApplicationIcon"; - this.pbxApplicationIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.kryptonTableLayoutPanel1.SetRowSpan(this.pbxApplicationIcon, 2); - this.pbxApplicationIcon.Size = new System.Drawing.Size(69, 69); - this.pbxApplicationIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.pbxApplicationIcon.TabIndex = 0; - this.pbxApplicationIcon.TabStop = false; - // - // kwlHeader - // - this.kwlHeader.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlHeader, 3); - this.kwlHeader.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlHeader.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold); - this.kwlHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlHeader.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlHeader.Location = new System.Drawing.Point(78, 0); - this.kwlHeader.Name = "kwlHeader"; - this.kwlHeader.Size = new System.Drawing.Size(612, 23); - this.kwlHeader.StateCommon.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold); - this.kwlHeader.Text = "kryptonWrapLabel1"; - // - // kwlDetails - // - this.kwlDetails.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlDetails, 3); - this.kwlDetails.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlDetails.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDetails.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlDetails.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlDetails.Location = new System.Drawing.Point(78, 23); - this.kwlDetails.Name = "kwlDetails"; - this.kwlDetails.Size = new System.Drawing.Size(612, 52); - this.kwlDetails.StateCommon.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDetails.Text = "kryptonWrapLabel2"; - // - // kwlReleaseNotes - // - this.kwlReleaseNotes.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlReleaseNotes, 3); - this.kwlReleaseNotes.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlReleaseNotes.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlReleaseNotes.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlReleaseNotes.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlReleaseNotes.Location = new System.Drawing.Point(78, 75); - this.kwlReleaseNotes.Name = "kwlReleaseNotes"; - this.kwlReleaseNotes.Size = new System.Drawing.Size(612, 18); - this.kwlReleaseNotes.StateCommon.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlReleaseNotes.Text = "kryptonWrapLabel3"; - // - // kbtnSkip - // - this.kbtnSkip.AutoSize = true; - this.kbtnSkip.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.kbtnSkip.DialogResult = System.Windows.Forms.DialogResult.Abort; - this.kbtnSkip.Dock = System.Windows.Forms.DockStyle.Left; - this.kbtnSkip.Location = new System.Drawing.Point(78, 632); - this.kbtnSkip.Name = "kbtnSkip"; - this.kbtnSkip.Size = new System.Drawing.Size(137, 26); - this.kbtnSkip.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnSkip.TabIndex = 5; - this.kbtnSkip.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.hand_point; - this.kbtnSkip.Values.Text = "&Skip this version"; - this.kbtnSkip.Click += new System.EventHandler(this.kbtnSkip_Click); - // - // kbtnRemind - // - this.kbtnRemind.AutoSize = true; - this.kbtnRemind.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.kbtnRemind.Dock = System.Windows.Forms.DockStyle.Right; - this.kbtnRemind.Location = new System.Drawing.Point(343, 632); - this.kbtnRemind.Name = "kbtnRemind"; - this.kbtnRemind.Size = new System.Drawing.Size(139, 26); - this.kbtnRemind.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnRemind.TabIndex = 6; - this.kbtnRemind.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.clock_go; - this.kbtnRemind.Values.Text = "R&emind me later"; - this.kbtnRemind.Click += new System.EventHandler(this.kbtnRemind_Click); - // - // kbtnUpdate - // - this.kbtnUpdate.AutoSize = true; - this.kbtnUpdate.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.kbtnUpdate.DialogResult = System.Windows.Forms.DialogResult.OK; - this.kbtnUpdate.Dock = System.Windows.Forms.DockStyle.Right; - this.kbtnUpdate.Location = new System.Drawing.Point(614, 632); - this.kbtnUpdate.Name = "kbtnUpdate"; - this.kbtnUpdate.Size = new System.Drawing.Size(76, 26); - this.kbtnUpdate.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnUpdate.TabIndex = 7; - this.kbtnUpdate.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.download; - this.kbtnUpdate.Values.Text = "&Update"; - this.kbtnUpdate.Click += new System.EventHandler(this.kbtnUpdate_Click); - // - // kryptonPanel2 - // - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kryptonPanel2, 3); - this.kryptonPanel2.Controls.Add(this.wvReleaseNotes); - this.kryptonPanel2.Controls.Add(this.kwbReleaseNotes); - this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel2.Location = new System.Drawing.Point(78, 96); - this.kryptonPanel2.Name = "kryptonPanel2"; - this.kryptonPanel2.Size = new System.Drawing.Size(612, 530); - this.kryptonPanel2.TabIndex = 8; - // - // wvReleaseNotes - // - this.wvReleaseNotes.AllowExternalDrop = true; - this.wvReleaseNotes.CreationProperties = null; - this.wvReleaseNotes.DefaultBackgroundColor = System.Drawing.Color.White; - this.wvReleaseNotes.Dock = System.Windows.Forms.DockStyle.Fill; - this.wvReleaseNotes.Location = new System.Drawing.Point(0, 0); - this.wvReleaseNotes.Name = "wvReleaseNotes"; - this.wvReleaseNotes.Size = new System.Drawing.Size(612, 530); - this.wvReleaseNotes.TabIndex = 1; - this.wvReleaseNotes.ZoomFactor = 1D; - // - // kwbReleaseNotes - // - this.kwbReleaseNotes.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwbReleaseNotes.Location = new System.Drawing.Point(0, 0); - this.kwbReleaseNotes.Name = "kwbReleaseNotes"; - this.kwbReleaseNotes.ScriptErrorsSuppressed = true; - this.kwbReleaseNotes.Size = new System.Drawing.Size(612, 530); - this.kwbReleaseNotes.TabIndex = 0; - // - // UpdateWindow - // - this.AcceptButton = this.kbtnUpdate; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(693, 661); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "UpdateWindow"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "UpdateWindow"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.UpdateWindow_FormClosing); - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.UpdateWindow_FormClosed); - this.Load += new System.EventHandler(this.UpdateWindow_Load); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); - this.kryptonPanel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.wvReleaseNotes)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private KryptonPanel kryptonPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pbxApplicationIcon; - private KryptonWrapLabel kwlHeader; - private KryptonWrapLabel kwlDetails; - private KryptonWrapLabel kwlReleaseNotes; - private KryptonButton kbtnSkip; - private KryptonButton kbtnRemind; - private KryptonButton kbtnUpdate; - private KryptonPanel kryptonPanel2; - private KryptonWebBrowser kwbReleaseNotes; - private Microsoft.Web.WebView2.WinForms.WebView2 wvReleaseNotes; - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Globals/GlobalDeclarations.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Globals/GlobalDeclarations.cs index 1dcf4a787..3a2365cbc 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Globals/GlobalDeclarations.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Globals/GlobalDeclarations.cs @@ -58,5 +58,4 @@ global using Krypton.Toolkit.Suite.Extended.Software.Updater.Properties; global using Krypton.Toolkit.Suite.Extended.Developer.Utilities; - -global using Krypton.Toolkit.Suite.Extended.Software.Updater.Core; \ No newline at end of file +//global using Krypton.Toolkit.Suite.Extended.Software.Updater. \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Krypton.Toolkit.Suite.Extended.Software.Updater 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Krypton.Toolkit.Suite.Extended.Software.Updater 2022.csproj index e73483c6e..b7ae3aa20 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Krypton.Toolkit.Suite.Extended.Software.Updater 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Krypton.Toolkit.Suite.Extended.Software.Updater 2022.csproj @@ -87,7 +87,7 @@ - + @@ -159,6 +159,11 @@ + + + + + @@ -179,11 +184,6 @@ - - True - True - NetSparkleResources.resx - True @@ -193,10 +193,6 @@ - - ResXFileCodeGenerator - NetSparkleResources.Designer.cs - ResXFileCodeGenerator @@ -236,10 +232,6 @@ - - - - True diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Classes/UIFactory.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Classes/UIFactory.cs deleted file mode 100644 index c11fea07a..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Classes/UIFactory.cs +++ /dev/null @@ -1,242 +0,0 @@ -#region License - -/* - * The MIT License - * - * Copyright (c) 2022 Deadpikle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#endregion - -using Krypton.Toolkit.Suite.Extended.Software.Updater.NetSparkle.Resources; - -using Application = System.Windows.Forms.Application; - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - /// - /// UI factory for WinForms .NET Core interface - /// - public class UIFactory : IUIFactory - { - private Icon? _applicationIcon = null; - - /// - public UIFactory() - { - HideReleaseNotes = false; - HideRemindMeLaterButton = false; - HideSkipButton = false; - } - - /// - public UIFactory(Icon applicationIcon) : this() - { - _applicationIcon = applicationIcon; - } - - /// - public bool HideReleaseNotes { get; set; } - - /// - public bool HideSkipButton { get; set; } - - /// - public bool HideRemindMeLaterButton { get; set; } - - /// - public string ReleaseNotesHTMLTemplate { get; set; } - - /// - public string AdditionalReleaseNotesHeaderHTML { get; set; } - - /// - /// The DateTime.ToString() format used when formatting dates to show in the release notes - /// header. NetSparkle is not responsible for what happens if you send a bad format! :) - /// - public string ReleaseNotesDateTimeFormat { get; set; } = "D"; - - /// - /// - /// Easily set / override the ReleaseNotesGrabber used by the . - /// Note that this will NOT automatically use the ReleaseNotesHTMLTemplate, - /// AdditionalReleaseNotesHeaderHTML, and ReleaseNotesDateTimeFormat that you may have set on - /// the UIFactory - you must set these on this manual override yourself! - /// - /// - /// Use this if you want to easily override the ReleaseNotesGrabber with your own subclass. - /// - /// - public ReleaseNotesGrabber? ReleaseNotesGrabberOverride { get; set; } = null; - - /// - public virtual IUpdateAvailable CreateUpdateAvailableWindow(SparkleUpdater sparkle, List updates, bool isUpdateAlreadyDownloaded = false) - { - var window = new NetSparkleUpdateAvailableWindow(sparkle, updates, _applicationIcon, isUpdateAlreadyDownloaded, - ReleaseNotesHTMLTemplate, AdditionalReleaseNotesHeaderHTML, ReleaseNotesDateTimeFormat); - if (HideReleaseNotes) - { - (window as IUpdateAvailable).HideReleaseNotes(); - } - if (HideSkipButton) - { - (window as IUpdateAvailable).HideSkipButton(); - } - if (HideRemindMeLaterButton) - { - (window as IUpdateAvailable).HideRemindMeLaterButton(); - } - if (ReleaseNotesGrabberOverride != null) - { - window.ReleaseNotesGrabber = ReleaseNotesGrabberOverride; - } - window.Initialize(); - return window; - } - - /// - public virtual IDownloadProgress CreateProgressWindow(SparkleUpdater sparkle, AppCastItem? item) - { - return new NetSparkleDownloadProgressWindow(item, _applicationIcon) - { - SoftwareWillRelaunchAfterUpdateInstalled = sparkle.RelaunchAfterUpdate - }; - } - - /// - public virtual ICheckingForUpdates ShowCheckingForUpdates(SparkleUpdater sparkle) - { - return new NetSparkleCheckingForUpdatesWindow(_applicationIcon); - } - - /// - public virtual void Init(SparkleUpdater sparkle) - { - // enable visual style to ensure that we have XP style or higher - // also in WPF applications - Application.EnableVisualStyles(); - } - - /// - public virtual void ShowUnknownInstallerFormatMessage(SparkleUpdater sparkle, string downloadFileName) - { - ShowMessage(NetSparkleResources.DefaultUIFactory_MessageTitle, - string.Format(NetSparkleResources.DefaultUIFactory_ShowUnknownInstallerFormatMessageText, downloadFileName)); - } - - /// - public virtual void ShowVersionIsUpToDate(SparkleUpdater sparkle) - { - ShowMessage(NetSparkleResources.DefaultUIFactory_MessageTitle, NetSparkleResources.DefaultUIFactory_ShowVersionIsUpToDateMessage); - } - - /// - public virtual void ShowVersionIsSkippedByUserRequest(SparkleUpdater sparkle) - { - ShowMessage(NetSparkleResources.DefaultUIFactory_MessageTitle, NetSparkleResources.DefaultUIFactory_ShowVersionIsSkippedByUserRequestMessage); - } - - /// - public virtual void ShowCannotDownloadAppcast(SparkleUpdater sparkle, string appcastUrl) - { - ShowMessage(NetSparkleResources.DefaultUIFactory_ErrorTitle, NetSparkleResources.DefaultUIFactory_ShowCannotDownloadAppcastMessage); - } - - /// - public virtual bool CanShowToastMessages(SparkleUpdater sparkle) - { - return true; - } - - /// - public virtual void ShowToast(SparkleUpdater sparkle, List updates, Action> clickHandler) - { - Thread thread = new Thread(() => - { - var toast = new NetSparkleToastNotifierWindow(_applicationIcon) - { - ClickAction = clickHandler, - Updates = updates - }; - toast.Show(NetSparkleResources.DefaultUIFactory_ToastMessage, NetSparkleResources.DefaultUIFactory_ToastCallToAction, 5); - Application.Run(toast); - }); - thread.SetApartmentState(ApartmentState.STA); - thread.Start(); - } - - /// - public virtual void ShowDownloadErrorMessage(SparkleUpdater sparkle, string message, string appcastUrl) - { - ShowMessage(NetSparkleResources.DefaultUIFactory_ErrorTitle, string.Format(NetSparkleResources.DefaultUIFactory_ShowDownloadErrorMessage, message)); - } - - private void ShowMessage(string title, string message) - { - var messageWindow = new NetSparkleMessageNotificationWindow(title, message, _applicationIcon); - messageWindow.StartPosition = FormStartPosition.CenterScreen; - messageWindow.ShowDialog(); - } - - /// - public void Shutdown(SparkleUpdater sparkle) - { - Application.Exit(); - } - - #region --- Windows Forms Result Converters --- - - /// - /// Method performs simple conversion of DialogResult to boolean. - /// This method is a convenience when upgrading legacy code. - /// - /// WinForms DialogResult instance - /// Boolean based on dialog result - public static bool ConvertDialogResultToDownloadProgressResult(DialogResult dialogResult) - { - return (dialogResult != DialogResult.Abort) && (dialogResult != DialogResult.Cancel); - } - - /// - /// Method performs simple conversion of DialogResult to UpdateAvailableResult. - /// This method is a convenience when upgrading legacy code. - /// - /// WinForms DialogResult instance - /// Enumeration value based on dialog result - public static UpdateAvailableResult ConvertDialogResultToUpdateAvailableResult(DialogResult dialogResult) - { - switch (dialogResult) - { - case DialogResult.Yes: - return UpdateAvailableResult.InstallUpdate; - case DialogResult.No: - return UpdateAvailableResult.SkipUpdate; - case DialogResult.Retry: - case DialogResult.Cancel: - return UpdateAvailableResult.RemindMeLater; - } - - return UpdateAvailableResult.None; - } - - #endregion - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Resources/NetSparkleResources.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Resources/NetSparkleResources.Designer.cs deleted file mode 100644 index 89a94f987..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Resources/NetSparkleResources.Designer.cs +++ /dev/null @@ -1,277 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.NetSparkle.Resources { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // 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", "17.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class NetSparkleResources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal NetSparkleResources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Krypton.Toolkit.Suite.Extended.Software.Updater.NetSparkle.Resources.NetSparkleRe" + - "sources", typeof(NetSparkleResources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap clock_go { - get { - object obj = ResourceManager.GetObject("clock_go", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap clock_go_32 { - get { - object obj = ResourceManager.GetObject("clock_go_32", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap clock_go1 { - get { - object obj = ResourceManager.GetObject("clock_go1", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap clock_play { - get { - object obj = ResourceManager.GetObject("clock_play", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to Error!. - /// - internal static string DefaultUIFactory_ErrorTitle { - get { - return ResourceManager.GetString("DefaultUIFactory_ErrorTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Info. - /// - internal static string DefaultUIFactory_MessageTitle { - get { - return ResourceManager.GetString("DefaultUIFactory_MessageTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sorry, either you aren't connected to the internet, or our server is having a problem.. - /// - internal static string DefaultUIFactory_ShowCannotDownloadAppcastMessage { - get { - return ResourceManager.GetString("DefaultUIFactory_ShowCannotDownloadAppcastMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sorry, there was a problem attempting to download the update - /// - ///{0}. - /// - internal static string DefaultUIFactory_ShowDownloadErrorMessage { - get { - return ResourceManager.GetString("DefaultUIFactory_ShowDownloadErrorMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Updater not supported, please execute {0} manually. - /// - internal static string DefaultUIFactory_ShowUnknownInstallerFormatMessageText { - get { - return ResourceManager.GetString("DefaultUIFactory_ShowUnknownInstallerFormatMessageText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You have elected to skip this version.. - /// - internal static string DefaultUIFactory_ShowVersionIsSkippedByUserRequestMessage { - get { - return ResourceManager.GetString("DefaultUIFactory_ShowVersionIsSkippedByUserRequestMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Your current version is up to date.. - /// - internal static string DefaultUIFactory_ShowVersionIsUpToDateMessage { - get { - return ResourceManager.GetString("DefaultUIFactory_ShowVersionIsUpToDateMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to More information. - /// - internal static string DefaultUIFactory_ToastCallToAction { - get { - return ResourceManager.GetString("DefaultUIFactory_ToastCallToAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to New Version Available. - /// - internal static string DefaultUIFactory_ToastMessage { - get { - return ResourceManager.GetString("DefaultUIFactory_ToastMessage", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap download { - get { - object obj = ResourceManager.GetObject("download", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap download_32 { - get { - object obj = ResourceManager.GetObject("download_32", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap download1 { - get { - object obj = ResourceManager.GetObject("download1", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap hand_point { - get { - object obj = ResourceManager.GetObject("hand_point", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap update { - get { - object obj = ResourceManager.GetObject("update", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap update_48_x_48 { - get { - object obj = ResourceManager.GetObject("update_48_x_48", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon update1 { - get { - object obj = ResourceManager.GetObject("update1", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap update2 { - get { - object obj = ResourceManager.GetObject("update2", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon ZipExtractor { - get { - object obj = ResourceManager.GetObject("ZipExtractor", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - } -} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Resources/NetSparkleResources.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Resources/NetSparkleResources.resx deleted file mode 100644 index e91822613..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/Resources/NetSparkleResources.resx +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\..\Resources\clock_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\clock_go1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\clock_go_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\clock_play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Error! - - - Info - - - Sorry, either you aren't connected to the internet, or our server is having a problem. - - - Sorry, there was a problem attempting to download the update - -{0} - - - Updater not supported, please execute {0} manually - - - You have elected to skip this version. - - - Your current version is up to date. - - - More information - - - New Version Available - - - ..\..\Resources\download.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\download1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\download_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\hand_point.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\update.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\update.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\update.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\update_48_x_48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\..\Resources\ZipExtractor.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.Designer.cs deleted file mode 100644 index bc75715f5..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.Designer.cs +++ /dev/null @@ -1,149 +0,0 @@ -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - partial class NetSparkleCheckingForUpdatesWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NetSparkleCheckingForUpdatesWindow)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pbxApplicationIcon = new System.Windows.Forms.PictureBox(); - this.kwlblCheckingForUpdates = new Krypton.Toolkit.KryptonWrapLabel(); - this.kpbProgress = new Krypton.Toolkit.KryptonProgressBar(); - this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); - this.kbtnCancel = new Krypton.Toolkit.KryptonButton(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); - this.kryptonPanel2.SuspendLayout(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(530, 167); - this.kryptonPanel1.TabIndex = 1; - // - // kryptonTableLayoutPanel1 - // - this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); - this.kryptonTableLayoutPanel1.ColumnCount = 3; - this.kryptonTableLayoutPanel1.Controls.Add(this.pbxApplicationIcon, 0, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlblCheckingForUpdates, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kpbProgress, 1, 1); - this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonPanel2, 1, 2); - this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; - this.kryptonTableLayoutPanel1.RowCount = 3; - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(530, 167); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // pbxApplicationIcon - // - this.pbxApplicationIcon.BackColor = System.Drawing.Color.Transparent; - this.pbxApplicationIcon.Location = new System.Drawing.Point(3, 3); - this.pbxApplicationIcon.Name = "pbxApplicationIcon"; - this.pbxApplicationIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.pbxApplicationIcon.Size = new System.Drawing.Size(48, 48); - this.pbxApplicationIcon.TabIndex = 0; - this.pbxApplicationIcon.TabStop = false; - // - // kwlblCheckingForUpdates - // - this.kwlblCheckingForUpdates.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlblCheckingForUpdates, 2); - this.kwlblCheckingForUpdates.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlblCheckingForUpdates.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlblCheckingForUpdates.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlblCheckingForUpdates.Location = new System.Drawing.Point(41, 0); - this.kwlblCheckingForUpdates.Name = "kwlblCheckingForUpdates"; - this.kwlblCheckingForUpdates.Size = new System.Drawing.Size(486, 69); - this.kwlblCheckingForUpdates.StateCommon.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlblCheckingForUpdates.Text = "Checking for Updates..."; - this.kwlblCheckingForUpdates.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // kpbProgress - // - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kpbProgress, 2); - this.kpbProgress.Location = new System.Drawing.Point(41, 72); - this.kpbProgress.Name = "kpbProgress"; - this.kpbProgress.Size = new System.Drawing.Size(486, 23); - this.kpbProgress.TabIndex = 2; - // - // kryptonPanel2 - // - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kryptonPanel2, 2); - this.kryptonPanel2.Location = new System.Drawing.Point(41, 101); - this.kryptonPanel2.Name = "kryptonPanel2"; - this.kryptonPanel2.Size = new System.Drawing.Size(486, 63); - this.kryptonPanel2.TabIndex = 3; - // - // kbtnCancel - // - this.kbtnCancel.Location = new System.Drawing.Point(198, 18); - this.kbtnCancel.Name = "kbtnCancel"; - this.kbtnCancel.Size = new System.Drawing.Size(90, 25); - this.kbtnCancel.TabIndex = 0; - this.kbtnCancel.Values.Text = "&Cancel"; - this.kbtnCancel.Click += new System.EventHandler(this.kbtnCancel_Click); - // - // NetSparkleCheckingForUpdatesWindow - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.ClientSize = new System.Drawing.Size(530, 167); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "NetSparkleCheckingForUpdatesWindow"; - this.Text = "Checking for Updates"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.NetSparkleCheckingForUpdatesWindow_FormClosing); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); - this.kryptonPanel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private KryptonPanel kryptonPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pbxApplicationIcon; - private KryptonWrapLabel kwlblCheckingForUpdates; - private KryptonProgressBar kpbProgress; - private KryptonPanel kryptonPanel2; - private KryptonButton kbtnCancel; - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.cs deleted file mode 100644 index 8451fed61..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.cs +++ /dev/null @@ -1,94 +0,0 @@ -#region License - -/* - * The MIT License - * - * Copyright (c) 2022 Deadpikle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#endregion - -using MethodInvoker = System.Windows.Forms.MethodInvoker; -using Size = System.Drawing.Size; - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - public partial class NetSparkleCheckingForUpdatesWindow : KryptonForm, ICheckingForUpdates - { - public NetSparkleCheckingForUpdatesWindow() - { - InitializeComponent(); - } - - public NetSparkleCheckingForUpdatesWindow(Icon? applicationIcon = null) - { - InitializeComponent(); - - if (applicationIcon != null) - { - Icon = applicationIcon; - - pbxApplicationIcon.Image = new Icon(applicationIcon, new Size(48, 48)).ToBitmap(); - } - } - - public event EventHandler? UpdatesUIClosing; - - private void NetSparkleCheckingForUpdatesWindow_FormClosing(object sender, FormClosingEventArgs e) - { - UpdatesUIClosing?.Invoke(sender, new()); - } - - void ICheckingForUpdates.Close() - { - CloseForm(); - } - void ICheckingForUpdates.Show() - { - Show(); - } - - private void kbtnCancel_Click(object sender, EventArgs e) - { - CloseForm(); - } - - private void CloseForm() - { - if (InvokeRequired && !IsDisposed && !Disposing) - { - Invoke((MethodInvoker)delegate () - { - if (!IsDisposed && !Disposing) - { - UpdatesUIClosing?.Invoke(this, new()); - Close(); - } - }); - } - else if (!IsDisposed && !Disposing) - { - UpdatesUIClosing?.Invoke(this, new()); - Close(); - } - } - } -} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.resx deleted file mode 100644 index 0268b9d36..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleCheckingForUpdatesWindow.resx +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - iVBORw0KGgoAAAANSUhEUgAAAhIAAACnCAYAAABEpbVQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOASURBVHhe7djBTQNREERB0nWM5EAYpGHkkcxppIaeax1K - q7+TwFN/PB6P5+fX9/P1ffP29vb29vb2/sv7NyQAAP7j1RBCAgCoTEhsBwCAxCIBAJwICQCgYpEAAGoT - EtsBACCxSAAAJ0ICAKhYJACA2oTEdgAASCwSAMCJkAAAKhYJAKA2IbEdAAASiwQAcCIkAICKRQIAqE1I - bAcAgMQiAQCcCAkAoGKRAABqExLbAQAgsUgAACdCAgCoWCQAgNqExHYAAEgsEgDAiZAAACoWCQCgNiGx - HQAAEosEAHAiJACAikUCAKhNSGwHAIDEIgEAnAgJAKBikQAAahMS2wEAILFIAAAnQgIAqFgkAIDahMR2 - AABILBIAwImQAAAqFgkAoDYhsR0AABKLBABwIiQAgIpFAgCoTUhsBwCAxCIBAJwICQCgYpEAAGoTEtsB - ACCxSAAAJ0ICAKhYJACA2oTEdgAASCwSAMCJkAAAKhYJAKA2IbEdAAASiwQAcCIkAICKRQIAqE1IbAcA - gMQiAQCcCAkAoGKRAABqExLbAQAgsUgAACdCAgCoWCQAgNqExHYAAEgsEgDAiZAAACoWCQCgNiGxHQAA - EosEAHAiJACAikUCAKhNSGwHAIDEIgEAnAgJAKBikQAAahMS2wEAILFIAAAnQgIAqFgkAIDahMR2AABI - LBIAwImQAAAqFgkAoDYhsR0AABKLBABwIiQAgIpFAgCoTUhsBwCAxCIBAJwICQCgYpEAAGoTEtsBACCx - SAAAJ0ICAKhYJACA2oTEdgAASCwSAMCJkAAAKhYJAKA2IbEdAAASiwQAcCIkAICKRQIAqE1IbAcAgMQi - AQCcCAkAoGKRAABqExLbAQAgsUgAACdCAgCoWCQAgNqExHYAAEgsEgDAiZAAACoWCQCgNiGxHQAAEosE - AHAiJACAikUCAKhNSGwHAIDEIgEAnAgJAKBikQAAahMS2wEAILFIAAAnQgIAqFgkAIDahMR2AABILBIA - wImQAAAqFgkAoDYhsR0AABKLBABwIiQAgIpFAgCoTUhsBwCAxCIBAJwICQCgYpEAAGoTEtsBACCxSAAA - J0ICAKhYJACA2oTEdgAASCwSAMCJkAAAKhYJAKA2IbEdAAASiwQAcCIkAICKRQIAqE1IbAcAgMQiAQCc - CAkAoPK7SLy9f3p7e3t7e3t75/fj+QOlZif8w1jFCgAAAABJRU5ErkJggg== - - - - - AAABAAIAEBAAAAAAIABoBAAAJgAAADAwAAAAACAAqCUAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE - AADXDQAA1w0AAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AABczlIAXM5i////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczg8BXs/tAV3P9ABc - zhf///8A////AP///wD///8A////AP///wD///8A////AABczmIAXM5rAFzOMwBczgUAXc+fDW3a9xBx - 3fkBXtCwAFzOAwBczjAAXM5nAFzOb////wD///8A////AP///wAAXM50A1/Q/Adi0PoBXs/6A1/Q+h+I - 8v8givP/BWHR+QFez/kGYdD7BGHR/ABczoz///8A////AP///wD///8AAFzOPAVh0fcji/b/I4fw/yCF - 7v8Xhfb/E4P2/yGF7/8ih/D/I4v2/whl1PMAXM5Q////AP///wD///8A////AABczgkAXM78K43y/xWG - 9v8Thfb/a7T6/2q0+v8Thfb/EoT1/y+S9f8BXc7+AFzOFv///wD///8A////AABczhUAXc+nB2LQ+jST - 8f8fjff/bbf7/83q///N6v//bbf7/xmK9v83lvT/CmTS+QFe0LMAXM4a////AABczmMCXs/zIHrf+EWf - 9v80mvj/crr7/83q///N6v//zer//83q//9xuvv/MZj4/0ah9v8lf+H6Al7P9gBczm8AXM5jAV3P8yJ7 - 3/hOpvf/QaL5/x+S+P8bkPj/zer//83q//8bkPj/HZH4/z2h+f9QqPf/JoDi+gJez/YAXM5v////AABc - zhUBXs+nCGPR+lKm9P85ofn/IZb4/83q///N6v//IZb4/zKe+f9Xq/X/C2XT+QJf0LMAXM4a////AP// - /wD///8AAFzOCQBdzvxisvb/Qaj6/0Cn+v+/5P7/v+T+/0Cn+v8+pvr/aLj5/wNez/4AXM4W////AP// - /wD///8A////AABczjwQaNP3dcH8/2y49v9ms/T/Xrf7/1e0+/9otPX/a7f2/3TB+/8cc9j0AFzOUP// - /wD///8A////AP///wAAXM50CmPR/BJp0/oCXs/6CmTR+nG9+f90wPr/EGjS+QFdz/kPZ9L7DWbS/ABc - zoz///8A////AP///wD///8AAFzOYgBczmsAXM4zAFzOBQJfz54xhd/4PI7j+QJf0LAAXM4DAFzOMABc - zmcAXM5v////AP///wD///8A////AP///wD///8A////AP///wAAXM4PAl/P7QRfz/QAXM4X////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczlAAXM5g////AP// - /wD///8A////AP///wD///8A////AP5/AAD8PwAAwAMAAMADAADAAwAAwAMAAIABAAAAAAAAAAAAAIAB - AADAAwAAwAMAAMADAADAAwAA/D8AAP5/AAAoAAAAMAAAAGAAAAABACAAAAAAAAAkAAASCwAAEgsAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAEAAAACAAAAAwAAAAMAAAAEAAAABQAAAAYAAAAHAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACAAA - AAgAAAAHAAAABwAAAAcAAAAGAAAABQAAAAQAAAADAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACQAAAAoAAAALAAAADAAAAA0AAAANAAAADgAA - AA4AAAAOAAAADgAAAA0AAAANAAAADAAAAAsAAAAKAAAACQAAAAcAAAAGAAAABQAAAAQAAAADAAAAAgAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAAAwAAAAUAAAAHAAAACAAAAAoAAAAMAAAADQAAAA8AAAARAAAAEgAA - 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 - q0gAAAALAAAACAAAAAUAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAIAAAAEAAAABwBdz+ofhOz/GYj3/wd/9v8Hf/b/CID2/w+D9v8YiPf/H4z3/yWN9f8Ziff/CYD2/wd/ - 9v8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/9v8Xh/f/JIz1/yCM9/8ZiPf/EIT2/wiA9v8Hf/b/B3/2/xOF - 9v8ni/H/AFzO/AAiTBYAAAAKAAAABwAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAABQBczK4WeOL/IIv2/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/xmI9/8df+n/AF3O1gAAAAsAAAAIAAAABQAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAABABZyG8Ladj1KI/2/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/yGL9v8Uc9/8AFnHlwAAAAkAAAAGAAAABAAAAAIAAAABAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwBWwjUCXs/8LZD2/wd9 - 9f8BevX/AXn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/xSF9v8AefX/AHn1/wB5 - 9f8AefX/AHn1/wB59f8BefX/AXn1/wF69f8BevX/Anv1/yuQ9/8KZtX1AFfCXAAAAAYAAAAEAAAAAwAA - AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgA1 - dwcAXM/4KIrw/xSE9v8De/X/A3v1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/RaT6/43P - /v9NqPn/A3z1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/A3v1/wN79f8De/X/C3/1/y+R9P8CXc7/AE6vIwAA - AAQAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAXc/IIH/o/yCL9/8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/BX32/wuA - 9v9gtPv/jtD+/47Q/v+O0P7/YLT7/wmA9v8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/GYf3/ymJ - 7v8AXc/tAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAXM2XGHTe+iyS9/8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/F4j3/3TA/P+O0P7/jtD+/47Q/v+O0P7/jtD+/2+9/P8Rhff/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/I473/yJ/5v8AXc7EAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOFABdz6YHYdD8Lojo/iKO9/8Jgfb/CYH2/wmB - 9v8Jgfb/CYH2/wmB9v8plPj/g8n9/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v96xf3/HIz3/wmB - 9v8Jgfb/CYH2/wmB9v8Jgfb/GIn3/zWP7f8LZdL6AF3PwQBcziIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM5fAV7P8hx02/k7l/P/LJT3/w+E - 9v8Mg/b/DIP2/wyD9v8Mg/b/DIP2/0Ci+v+Lz/7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/hMr9/ymU+P8Mg/b/DIP2/wyD9v8Mg/b/DYP2/yeR9/89mfX/I3zf+wNf0PoAXM54AFzOBAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJQFe0MUMZdL5NI3r/zyc - +f8djfj/DoX3/w6F9/8Ohff/DoX3/w6F9/8Qhvf/WbH7/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/4rN/v85nvr/DoX3/w6F9/8Ohff/DoX3/w6F9/8Xivf/OJr4/zqT - 7/8TbNX4AV7Q2ABczjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczgUAXc9+Al7P+yZ+ - 4PxEnvb/Lpb4/xKI9/8Qh/f/EIf3/xCH9/8Qh/f/EIf3/xiM+P9qvPz/is7+/4rO/v+Lz/7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/i8/+/4rO/v+Kzv7/Rqf6/xCH9/8Qh/f/EIf3/xCH - 9/8Qh/f/EIf3/yeT+P9Dn/f/LYXl/QZgz/0AXc+VAFzODQAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOOwFe - 0N0TbNb4Ppjw/z+f+f8dj/f/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ - 9/89ovr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/OZ/6/xKJ9/8Siff/Eon3/xKJ - 9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8ZjPf/OJz4/0Oc8/8cdNn5AV3P6wBczk4AAAAAAAAAAAAA - AAAAXM4QAFzOzQNez/44k+7/Taf5/y2X+P8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL - 9/8Vi/f/FYv3/xWL9/8/o/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/O6D6/xWL - 9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/JJL4/0ml+f9AmfH/CmTS/QBd - z98AXM4iAAAAAAAAAAAAAAAAAFzOAwBcznIAXc/4Hnnf+kqk9/9Dovn/H5H4/xeN+P8Xjfj/F434/xeN - +P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P9ApPr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/PaL6/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xyP+P86nvn/Tqf4/yiD - 5PsBXs/7AF3PiABczgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4eAV7PuAZh0fk2j+v/Uqv6/zWd - +f8aj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P9Bpvr/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/PqP6/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/Lpn5/06p - +v9AmO//DGbT+AFe0M4AXM4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABc - zlIBXs/rGXPa+E2k9P9Nqfr/KJf4/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/xyR+P9Dp/r/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKX6/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/yOU - +P9Hpvn/Uqj2/yN83voBXc/1AFzOaQBczgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM4NAV3PlgNf0Pwyi+b9WK75/zGc+f8ek/j/HpP4/x6T+P8ek/j/HpP4/x6T - +P9Ep/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKb6/x6T+P8ek/j/HpP4/x6T - +P8ek/j/J5f4/1iu+v89k+v/CGLQ+wFe0LAAXM4ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczjUBXtDcLoLg+0yq+v8glfn/IJX5/yCV - +f8glfn/IJX5/yCV+f8sm/r/i87+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+Jzf7/KZn5/yCV - +f8glfn/IJX5/yCV+f8glfn/QKT6/z+R5/8BXs/tAFzOSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXc+hMYnl/U6s - +v8il/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/K5z5/z2l+/89pfv/PaX7/z2l+/89pfv/PaX7/z2l - +v8pm/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/Qqb6/0KX7P8CX9DPAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAACX9DhSZ7u/0Sn+v8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ - +f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/OKL6/1qr9P8AXc77AFzOBgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczhIAXM7+YLH3/zij+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb - +f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/K535/2e4 - +v8LZNH7AFzONwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczksQadP4arv8/yyf+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/2C2+/8le9z3AFzOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczoUsg+D6Yrf7/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/1Wy+/8+k+f/Al7QrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJf0MlGm+v/VrP7/y6h - +v8uofr/LqH6/y6h+v8wovr/Paj6/0es+/80pPr/LqH6/y6h+v8uofr/LqH6/y6h+v8uofr/LqH6/y6h - +v8wovr/Rav7/z+p+v8xovr/LqH6/y6h+v8uofr/LqH6/0mt+/9ZqfH/Al7Q6gAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOBAFd - z/lhsfT/Sa77/zam+v9Grfv/VbT7/2W6+/9xv/r/arT0/1ul7P9vu/j/Q6z6/zCj+v8wo/r/MKP6/zCj - +v8wo/r/MKP6/zmn+v9vvfr/XKXs/2ay8/9xvvr/aLz7/1m1+/9Kr/v/O6j6/z2p+v9wvfn/A17P/wBc - zhsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAFzOMwZg0Px2wvz/csH8/3K9+P9irvH/SJfn/S1+2/YSaNH+A1/P8wFez+M1iOH6br/8/zWm - +/8ypfv/MqX7/zKl+/8ypfv/MqX7/2W7/P9JmOj9Al/P6wJez+4OZdH/J3ra9kWU5vxeqvD/crv4/3TC - /P93w/z/GXDW9wBczlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzObRBo0/w9jOL4H3LW+Qhh0P0DYNDaAV3PmgBczl8AXM4nAFzOAQBc - zhgCX8/1X63x/1q3/P81p/v/Naf7/zWn+/81p/v/TrL7/2249f8IYdD8AFzOMwAAAAAAXM4eAFzOVwBd - zpEDYNDTB2HP+xtv1fo4ieD3HnTX/QBdzo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOkwJf0LoAXM56AFzOQQBczgwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM5jFmzU+HfC+v9Er/v/N6n7/zep+/88q/v/dML8/yl82/gBXc+NAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzOBwBczjoAXM5yAl/QsgBdzrEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl/QxkOV5vxvwvz/Oqv7/zmr+/9jvfz/WKTs/gJf - z+QAXM4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJAVg0PltuPX/Wbn8/020 - /P92wPj/DmbR+wBczkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFd - zngjeNn4e8f8/3fH/f84iOD4Al7PowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczgQCX9DXUqHr/WSv8f8EX8/vAFzOEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4zCmTR+xZr1PkAXM5XAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV7PjwJfz7kAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAD/AAD/wAAAAD8AAP+A - AAAAHwAA/wAAAAAPAAD+AAAAAAcAAPwAAAAAAwAA/AAAAAADAAD8AAAAAAMAAPgAAAAAAQAA+AAAAAAB - AAD4AAAAAAEAAPgAAAAAAQAA/AAAAAADAAD8AAAAAAMAAPwAAAAAAwAA/gAAAAAHAAD/AAAAAA8AAP+A - AAAAHwAA/8AAAAA/AAD/gAAAAH8AAP8AAAAAHwAA/AAAAAAPAADwAAAAAAMAAOAAAAAAAQAAwAAAAAAA - AADgAAAAAAEAAPgAAAAABwAA/gAAAAAPAAD/AAAAAD8AAP/AAAAA/wAA/+AAAAH/AAD/4AAAAP8AAP/A - AAAA/wAA/8AAAAD/AAD/wAAAAP8AAP/AAAAA/wAA/4AAAAB/AAD/gAAAAH8AAP+AAAEAfwAA/4PwA/B/ - AAD///gD//8AAP//+Af//wAA///8D///AAD///wP//8AAP///h///wAA////P///AAD///////8AAP// - /////wAA - - - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.Designer.cs deleted file mode 100644 index 66687af40..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.Designer.cs +++ /dev/null @@ -1,213 +0,0 @@ -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - partial class NetSparkleDownloadProgressWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NetSparkleDownloadProgressWindow)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pbxApplicationIcon = new System.Windows.Forms.PictureBox(); - this.kwlHeader = new Krypton.Toolkit.KryptonWrapLabel(); - this.kwlDownloadProgress = new Krypton.Toolkit.KryptonWrapLabel(); - this.kpbDownloadProgress = new Krypton.Toolkit.KryptonProgressBar(); - this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonPanel3 = new Krypton.Toolkit.KryptonPanel(); - this.kbtnInstallAndRelaunch = new Krypton.Toolkit.KryptonButton(); - this.kbtnCancel = new Krypton.Toolkit.KryptonButton(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); - this.kryptonPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel3)).BeginInit(); - this.kryptonPanel3.SuspendLayout(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kryptonTableLayoutPanel1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(593, 207); - this.kryptonPanel1.TabIndex = 1; - // - // kryptonTableLayoutPanel1 - // - this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); - this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel1.ColumnCount = 2; - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.Controls.Add(this.pbxApplicationIcon, 0, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlHeader, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlDownloadProgress, 0, 1); - this.kryptonTableLayoutPanel1.Controls.Add(this.kpbDownloadProgress, 0, 2); - this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonPanel2, 1, 3); - this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonPanel3, 1, 4); - this.kryptonTableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; - this.kryptonTableLayoutPanel1.RowCount = 5; - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(593, 207); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // pbxApplicationIcon - // - this.pbxApplicationIcon.BackColor = System.Drawing.Color.Transparent; - this.pbxApplicationIcon.Location = new System.Drawing.Point(3, 3); - this.pbxApplicationIcon.Name = "pbxApplicationIcon"; - this.pbxApplicationIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.pbxApplicationIcon.Size = new System.Drawing.Size(48, 48); - this.pbxApplicationIcon.TabIndex = 0; - this.pbxApplicationIcon.TabStop = false; - // - // kwlHeader - // - this.kwlHeader.AutoSize = false; - this.kwlHeader.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlHeader.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlHeader.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlHeader.Location = new System.Drawing.Point(57, 0); - this.kwlHeader.Name = "kwlHeader"; - this.kwlHeader.Size = new System.Drawing.Size(533, 54); - this.kwlHeader.StateCommon.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlHeader.Text = "<#HEADER#>"; - this.kwlHeader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // kwlDownloadProgress - // - this.kwlDownloadProgress.AutoSize = false; - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kwlDownloadProgress, 2); - this.kwlDownloadProgress.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlDownloadProgress.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDownloadProgress.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlDownloadProgress.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlDownloadProgress.Location = new System.Drawing.Point(3, 54); - this.kwlDownloadProgress.Name = "kwlDownloadProgress"; - this.kwlDownloadProgress.Size = new System.Drawing.Size(587, 23); - this.kwlDownloadProgress.StateCommon.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlDownloadProgress.Text = "({0} {1} / {2} {3})"; - this.kwlDownloadProgress.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // kpbDownloadProgress - // - this.kryptonTableLayoutPanel1.SetColumnSpan(this.kpbDownloadProgress, 2); - this.kpbDownloadProgress.Dock = System.Windows.Forms.DockStyle.Fill; - this.kpbDownloadProgress.Location = new System.Drawing.Point(3, 80); - this.kpbDownloadProgress.Name = "kpbDownloadProgress"; - this.kpbDownloadProgress.Size = new System.Drawing.Size(587, 23); - this.kpbDownloadProgress.TabIndex = 3; - // - // kryptonPanel2 - // - this.kryptonPanel2.Controls.Add(this.kbtnInstallAndRelaunch); - this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel2.Location = new System.Drawing.Point(57, 109); - this.kryptonPanel2.Name = "kryptonPanel2"; - this.kryptonPanel2.Size = new System.Drawing.Size(533, 44); - this.kryptonPanel2.TabIndex = 4; - // - // kryptonPanel3 - // - this.kryptonPanel3.Controls.Add(this.kbtnCancel); - this.kryptonPanel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel3.Location = new System.Drawing.Point(57, 159); - this.kryptonPanel3.Name = "kryptonPanel3"; - this.kryptonPanel3.Size = new System.Drawing.Size(533, 45); - this.kryptonPanel3.TabIndex = 5; - // - // kbtnInstallAndRelaunch - // - this.kbtnInstallAndRelaunch.Location = new System.Drawing.Point(201, 10); - this.kbtnInstallAndRelaunch.Name = "kbtnInstallAndRelaunch"; - this.kbtnInstallAndRelaunch.Size = new System.Drawing.Size(117, 25); - this.kbtnInstallAndRelaunch.TabIndex = 0; - this.kbtnInstallAndRelaunch.Values.Text = "&Install && Relaunch"; - this.kbtnInstallAndRelaunch.Click += new System.EventHandler(this.kbtnInstallAndRelaunch_Click); - // - // kbtnCancel - // - this.kbtnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.kbtnCancel.Location = new System.Drawing.Point(214, 9); - this.kbtnCancel.Name = "kbtnCancel"; - this.kbtnCancel.Size = new System.Drawing.Size(90, 25); - this.kbtnCancel.TabIndex = 0; - this.kbtnCancel.Values.Text = "&Cancel"; - this.kbtnCancel.Click += new System.EventHandler(this.kbtnCancel_Click); - // - // NetSparkleDownloadProgressWindow - // - this.AcceptButton = this.kbtnInstallAndRelaunch; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.kbtnCancel; - this.ClientSize = new System.Drawing.Size(593, 207); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "NetSparkleDownloadProgressWindow"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Download Progress"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.NetSparkleDownloadProgressWindow_FormClosing); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); - this.kryptonPanel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel3)).EndInit(); - this.kryptonPanel3.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private KryptonPanel kryptonPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pbxApplicationIcon; - private KryptonWrapLabel kwlHeader; - private KryptonWrapLabel kwlDownloadProgress; - private KryptonProgressBar kpbDownloadProgress; - private KryptonPanel kryptonPanel2; - private KryptonPanel kryptonPanel3; - private KryptonButton kbtnInstallAndRelaunch; - private KryptonButton kbtnCancel; - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.cs deleted file mode 100644 index 411f3076d..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.cs +++ /dev/null @@ -1,235 +0,0 @@ -#region License - -/* - * The MIT License - * - * Copyright (c) 2022 Deadpikle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#endregion - -using Application = System.Windows.Forms.Application; -using MethodInvoker = System.Windows.Forms.MethodInvoker; -using Size = System.Drawing.Size; - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - public partial class NetSparkleDownloadProgressWindow : KryptonForm, IDownloadProgress - { - #region Instance Fields - - private bool _shouldLaunchInstallFileOnClose = false; - private bool _didCallDownloadProcessCompletedHandler = false; - - #endregion - - #region Public - - /// - /// Whether or not the software will relaunch after the update has been installed - /// - public bool SoftwareWillRelaunchAfterUpdateInstalled - { - set => kbtnInstallAndRelaunch.Text = value ? "&Install && Relaunch" : "&Install"; - } - - #endregion - - #region Identity - - public NetSparkleDownloadProgressWindow(AppCastItem? item, Icon applicationIcon) - { - InitializeComponent(); - - pbxApplicationIcon.Image = new Icon(applicationIcon, new Size(48, 48)).ToBitmap(); - - Icon = applicationIcon; - - kbtnInstallAndRelaunch.Visible = false; - - kbtnInstallAndRelaunch.Text = @"&Install && Relaunch"; - - kwlHeader.Text = $@"{item.AppName} {item.Version}"; - - kwlDownloadProgress.Text = string.Empty; - - kpbDownloadProgress.Maximum = 100; - - kpbDownloadProgress.Minimum = 0; - - kpbDownloadProgress.Step = 1; - } - - #endregion - - #region IDownloadProgress Implementation - - public event DownloadInstallEventHandler? DownloadProcessCompleted; - - public void SetDownloadAndInstallButtonEnabled(bool shouldBeEnabled) - { - if (InvokeRequired) - { - Invoke((MethodInvoker)delegate () { SetDownloadAndInstallButtonEnabled(shouldBeEnabled); }); - } - else - { - kbtnInstallAndRelaunch.Enabled = shouldBeEnabled; - } - } - - public void Show(bool isOnMainThread) - { - Show(); - - if (!isOnMainThread) - { - Application.Run(this); - } - } - - public void OnDownloadProgressChanged(object sender, ItemDownloadProgressEventArgs args) => OnDownloadProgressChanged(sender, args.BytesReceived, args.TotalBytesToReceive, args.ProgressPercentage); - - public void FinishedDownloadingFile(bool isDownloadedFileValid) - { - if (InvokeRequired) - { - Invoke((MethodInvoker)delegate () { FinishedDownloadingFile(isDownloadedFileValid); }); - } - else - { - kpbDownloadProgress.Visible = false; - - kbtnCancel.Visible = false; - - kwlDownloadProgress.Visible = false; - - if (isDownloadedFileValid) - { - kbtnInstallAndRelaunch.Visible = true; - } - else - { - kbtnInstallAndRelaunch.Visible = false; - } - } - } - - public bool DisplayErrorMessage(string errorMessage) - { - if (InvokeRequired) - { - Invoke((MethodInvoker)delegate () { DisplayErrorMessage(errorMessage); }); - } - else - { - kwlDownloadProgress.Visible = true; - - kpbDownloadProgress.Visible = false; - - kbtnInstallAndRelaunch.Visible = false; - - kbtnCancel.Text = @"Close"; - - kpbDownloadProgress.Text = errorMessage; - } - - return true; - } - - void IDownloadProgress.Close() - { - DialogResult = DialogResult.Abort; - - CloseForm(); - } - - #endregion - - #region Implementation - - private void CloseForm() - { - if (InvokeRequired) - { - Invoke((MethodInvoker)delegate () - { - Close(); - }); - } - else - { - Close(); - } - } - - /// - /// Event called when the client download progress changes - /// - private void OnDownloadProgressChanged(object sender, long bytesReceived, long totalBytesToReceive, int percentage) - { - if (InvokeRequired) - { - Invoke((MethodInvoker)delegate () { OnDownloadProgressChanged(sender, bytesReceived, totalBytesToReceive, percentage); }); - } - else - { - kpbDownloadProgress.Value = percentage; - - kwlDownloadProgress.Text = $@"({Utilities.ConvertNumBytesToUserReadableString(bytesReceived)} / - {Utilities.ConvertNumBytesToUserReadableString(totalBytesToReceive)})"; - } - } - - #endregion - - private void NetSparkleDownloadProgressWindow_FormClosing(object sender, FormClosingEventArgs e) - { - if (!_didCallDownloadProcessCompletedHandler) - { - _didCallDownloadProcessCompletedHandler = true; - DownloadProcessCompleted?.Invoke(this, new DownloadInstallEventArgs(_shouldLaunchInstallFileOnClose)); - } - } - - private void kbtnInstallAndRelaunch_Click(object sender, EventArgs e) - { - if (InvokeRequired) - { - Invoke((MethodInvoker)delegate () { kbtnInstallAndRelaunch_Click(sender, e); }); - } - else - { - DialogResult = DialogResult.OK; - _shouldLaunchInstallFileOnClose = true; - _didCallDownloadProcessCompletedHandler = true; - DownloadProcessCompleted?.Invoke(this, new DownloadInstallEventArgs(true)); - } - } - - private void kbtnCancel_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - _didCallDownloadProcessCompletedHandler = true; - DownloadProcessCompleted?.Invoke(this, new DownloadInstallEventArgs(false)); - } - } -} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.resx deleted file mode 100644 index 406aae598..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleDownloadProgressWindow.resx +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - iVBORw0KGgoAAAANSUhEUgAAAlEAAADPCAYAAADVj4TEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAASESURBVHhe7dnBTQNQDERB2k2N9EAZtBGEJXKyI3bPcxh9 - fbmBJ/vj8Xg8P7++n7/vH39/f39/f39///f/V0QBAPB/IgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSb - qG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoA - IDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABK - IgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCi - AABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8A - oCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDN - OQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0A - AMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSb - qG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoA - IDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABK - IgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCi - AABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8A - oCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDN - OQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0A - AMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSb - qG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoA - IDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABK - IgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKIgoAIDSbqG0AAMDNOQ8AoCCi - AABKIgoAIDSbqG0AAMDNOQ8AoCCiAABKr4j6ff/4+/v7+/v7+/u/+z+eP/p+RXiBeiS9AAAAAElFTkSu - QmCC - - - - - AAABAAIAEBAAAAAAIABoBAAAJgAAADAwAAAAACAAqCUAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE - AADXDQAA1w0AAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AABczlIAXM5i////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczg8BXs/tAV3P9ABc - zhf///8A////AP///wD///8A////AP///wD///8A////AABczmIAXM5rAFzOMwBczgUAXc+fDW3a9xBx - 3fkBXtCwAFzOAwBczjAAXM5nAFzOb////wD///8A////AP///wAAXM50A1/Q/Adi0PoBXs/6A1/Q+h+I - 8v8givP/BWHR+QFez/kGYdD7BGHR/ABczoz///8A////AP///wD///8AAFzOPAVh0fcji/b/I4fw/yCF - 7v8Xhfb/E4P2/yGF7/8ih/D/I4v2/whl1PMAXM5Q////AP///wD///8A////AABczgkAXM78K43y/xWG - 9v8Thfb/a7T6/2q0+v8Thfb/EoT1/y+S9f8BXc7+AFzOFv///wD///8A////AABczhUAXc+nB2LQ+jST - 8f8fjff/bbf7/83q///N6v//bbf7/xmK9v83lvT/CmTS+QFe0LMAXM4a////AABczmMCXs/zIHrf+EWf - 9v80mvj/crr7/83q///N6v//zer//83q//9xuvv/MZj4/0ah9v8lf+H6Al7P9gBczm8AXM5jAV3P8yJ7 - 3/hOpvf/QaL5/x+S+P8bkPj/zer//83q//8bkPj/HZH4/z2h+f9QqPf/JoDi+gJez/YAXM5v////AABc - zhUBXs+nCGPR+lKm9P85ofn/IZb4/83q///N6v//IZb4/zKe+f9Xq/X/C2XT+QJf0LMAXM4a////AP// - /wD///8AAFzOCQBdzvxisvb/Qaj6/0Cn+v+/5P7/v+T+/0Cn+v8+pvr/aLj5/wNez/4AXM4W////AP// - /wD///8A////AABczjwQaNP3dcH8/2y49v9ms/T/Xrf7/1e0+/9otPX/a7f2/3TB+/8cc9j0AFzOUP// - /wD///8A////AP///wAAXM50CmPR/BJp0/oCXs/6CmTR+nG9+f90wPr/EGjS+QFdz/kPZ9L7DWbS/ABc - zoz///8A////AP///wD///8AAFzOYgBczmsAXM4zAFzOBQJfz54xhd/4PI7j+QJf0LAAXM4DAFzOMABc - zmcAXM5v////AP///wD///8A////AP///wD///8A////AP///wAAXM4PAl/P7QRfz/QAXM4X////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczlAAXM5g////AP// - /wD///8A////AP///wD///8A////AP5/AAD8PwAAwAMAAMADAADAAwAAwAMAAIABAAAAAAAAAAAAAIAB - AADAAwAAwAMAAMADAADAAwAA/D8AAP5/AAAoAAAAMAAAAGAAAAABACAAAAAAAAAkAAASCwAAEgsAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAEAAAACAAAAAwAAAAMAAAAEAAAABQAAAAYAAAAHAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACAAA - AAgAAAAHAAAABwAAAAcAAAAGAAAABQAAAAQAAAADAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACQAAAAoAAAALAAAADAAAAA0AAAANAAAADgAA - AA4AAAAOAAAADgAAAA0AAAANAAAADAAAAAsAAAAKAAAACQAAAAcAAAAGAAAABQAAAAQAAAADAAAAAgAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAAAwAAAAUAAAAHAAAACAAAAAoAAAAMAAAADQAAAA8AAAARAAAAEgAA - ABQAAAAVAEacRQBOr2IAAAAWAAAAFQAAABUAAAAUAAAAEgAAABEAAAAPAAAADQAAAAwAAAAKAAAACAAA - AAcAAAAFAAAAAwAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - 9v8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/9v8Xh/f/JIz1/yCM9/8ZiPf/EIT2/wiA9v8Hf/b/B3/2/xOF - 9v8ni/H/AFzO/AAiTBYAAAAKAAAABwAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAABQBczK4WeOL/IIv2/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/xmI9/8df+n/AF3O1gAAAAsAAAAIAAAABQAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAABABZyG8Ladj1KI/2/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/yGL9v8Uc9/8AFnHlwAAAAkAAAAGAAAABAAAAAIAAAABAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwBWwjUCXs/8LZD2/wd9 - 9f8BevX/AXn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/xSF9v8AefX/AHn1/wB5 - 9f8AefX/AHn1/wB59f8BefX/AXn1/wF69f8BevX/Anv1/yuQ9/8KZtX1AFfCXAAAAAYAAAAEAAAAAwAA - AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgA1 - dwcAXM/4KIrw/xSE9v8De/X/A3v1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/RaT6/43P - /v9NqPn/A3z1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/A3v1/wN79f8De/X/C3/1/y+R9P8CXc7/AE6vIwAA - AAQAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAXc/IIH/o/yCL9/8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/BX32/wuA - 9v9gtPv/jtD+/47Q/v+O0P7/YLT7/wmA9v8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/GYf3/ymJ - 7v8AXc/tAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAXM2XGHTe+iyS9/8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/F4j3/3TA/P+O0P7/jtD+/47Q/v+O0P7/jtD+/2+9/P8Rhff/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/I473/yJ/5v8AXc7EAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOFABdz6YHYdD8Lojo/iKO9/8Jgfb/CYH2/wmB - 9v8Jgfb/CYH2/wmB9v8plPj/g8n9/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v96xf3/HIz3/wmB - 9v8Jgfb/CYH2/wmB9v8Jgfb/GIn3/zWP7f8LZdL6AF3PwQBcziIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM5fAV7P8hx02/k7l/P/LJT3/w+E - 9v8Mg/b/DIP2/wyD9v8Mg/b/DIP2/0Ci+v+Lz/7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/hMr9/ymU+P8Mg/b/DIP2/wyD9v8Mg/b/DYP2/yeR9/89mfX/I3zf+wNf0PoAXM54AFzOBAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJQFe0MUMZdL5NI3r/zyc - +f8djfj/DoX3/w6F9/8Ohff/DoX3/w6F9/8Qhvf/WbH7/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/4rN/v85nvr/DoX3/w6F9/8Ohff/DoX3/w6F9/8Xivf/OJr4/zqT - 7/8TbNX4AV7Q2ABczjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczgUAXc9+Al7P+yZ+ - 4PxEnvb/Lpb4/xKI9/8Qh/f/EIf3/xCH9/8Qh/f/EIf3/xiM+P9qvPz/is7+/4rO/v+Lz/7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/i8/+/4rO/v+Kzv7/Rqf6/xCH9/8Qh/f/EIf3/xCH - 9/8Qh/f/EIf3/yeT+P9Dn/f/LYXl/QZgz/0AXc+VAFzODQAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOOwFe - 0N0TbNb4Ppjw/z+f+f8dj/f/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ - 9/89ovr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/OZ/6/xKJ9/8Siff/Eon3/xKJ - 9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8ZjPf/OJz4/0Oc8/8cdNn5AV3P6wBczk4AAAAAAAAAAAAA - AAAAXM4QAFzOzQNez/44k+7/Taf5/y2X+P8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL - 9/8Vi/f/FYv3/xWL9/8/o/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/O6D6/xWL - 9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/JJL4/0ml+f9AmfH/CmTS/QBd - z98AXM4iAAAAAAAAAAAAAAAAAFzOAwBcznIAXc/4Hnnf+kqk9/9Dovn/H5H4/xeN+P8Xjfj/F434/xeN - +P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P9ApPr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/PaL6/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xyP+P86nvn/Tqf4/yiD - 5PsBXs/7AF3PiABczgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4eAV7PuAZh0fk2j+v/Uqv6/zWd - +f8aj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P9Bpvr/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/PqP6/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/Lpn5/06p - +v9AmO//DGbT+AFe0M4AXM4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABc - zlIBXs/rGXPa+E2k9P9Nqfr/KJf4/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/xyR+P9Dp/r/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKX6/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/yOU - +P9Hpvn/Uqj2/yN83voBXc/1AFzOaQBczgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM4NAV3PlgNf0Pwyi+b9WK75/zGc+f8ek/j/HpP4/x6T+P8ek/j/HpP4/x6T - +P9Ep/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKb6/x6T+P8ek/j/HpP4/x6T - +P8ek/j/J5f4/1iu+v89k+v/CGLQ+wFe0LAAXM4ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczjUBXtDcLoLg+0yq+v8glfn/IJX5/yCV - +f8glfn/IJX5/yCV+f8sm/r/i87+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+Jzf7/KZn5/yCV - +f8glfn/IJX5/yCV+f8glfn/QKT6/z+R5/8BXs/tAFzOSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXc+hMYnl/U6s - +v8il/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/K5z5/z2l+/89pfv/PaX7/z2l+/89pfv/PaX7/z2l - +v8pm/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/Qqb6/0KX7P8CX9DPAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAACX9DhSZ7u/0Sn+v8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ - +f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/OKL6/1qr9P8AXc77AFzOBgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczhIAXM7+YLH3/zij+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb - +f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/K535/2e4 - +v8LZNH7AFzONwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczksQadP4arv8/yyf+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/2C2+/8le9z3AFzOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczoUsg+D6Yrf7/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/1Wy+/8+k+f/Al7QrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJf0MlGm+v/VrP7/y6h - +v8uofr/LqH6/y6h+v8wovr/Paj6/0es+/80pPr/LqH6/y6h+v8uofr/LqH6/y6h+v8uofr/LqH6/y6h - +v8wovr/Rav7/z+p+v8xovr/LqH6/y6h+v8uofr/LqH6/0mt+/9ZqfH/Al7Q6gAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOBAFd - z/lhsfT/Sa77/zam+v9Grfv/VbT7/2W6+/9xv/r/arT0/1ul7P9vu/j/Q6z6/zCj+v8wo/r/MKP6/zCj - +v8wo/r/MKP6/zmn+v9vvfr/XKXs/2ay8/9xvvr/aLz7/1m1+/9Kr/v/O6j6/z2p+v9wvfn/A17P/wBc - zhsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAFzOMwZg0Px2wvz/csH8/3K9+P9irvH/SJfn/S1+2/YSaNH+A1/P8wFez+M1iOH6br/8/zWm - +/8ypfv/MqX7/zKl+/8ypfv/MqX7/2W7/P9JmOj9Al/P6wJez+4OZdH/J3ra9kWU5vxeqvD/crv4/3TC - /P93w/z/GXDW9wBczlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzObRBo0/w9jOL4H3LW+Qhh0P0DYNDaAV3PmgBczl8AXM4nAFzOAQBc - zhgCX8/1X63x/1q3/P81p/v/Naf7/zWn+/81p/v/TrL7/2249f8IYdD8AFzOMwAAAAAAXM4eAFzOVwBd - zpEDYNDTB2HP+xtv1fo4ieD3HnTX/QBdzo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOkwJf0LoAXM56AFzOQQBczgwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM5jFmzU+HfC+v9Er/v/N6n7/zep+/88q/v/dML8/yl82/gBXc+NAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzOBwBczjoAXM5yAl/QsgBdzrEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl/QxkOV5vxvwvz/Oqv7/zmr+/9jvfz/WKTs/gJf - z+QAXM4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJAVg0PltuPX/Wbn8/020 - /P92wPj/DmbR+wBczkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFd - zngjeNn4e8f8/3fH/f84iOD4Al7PowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczgQCX9DXUqHr/WSv8f8EX8/vAFzOEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4zCmTR+xZr1PkAXM5XAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV7PjwJfz7kAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAD/AAD/wAAAAD8AAP+A - AAAAHwAA/wAAAAAPAAD+AAAAAAcAAPwAAAAAAwAA/AAAAAADAAD8AAAAAAMAAPgAAAAAAQAA+AAAAAAB - AAD4AAAAAAEAAPgAAAAAAQAA/AAAAAADAAD8AAAAAAMAAPwAAAAAAwAA/gAAAAAHAAD/AAAAAA8AAP+A - AAAAHwAA/8AAAAA/AAD/gAAAAH8AAP8AAAAAHwAA/AAAAAAPAADwAAAAAAMAAOAAAAAAAQAAwAAAAAAA - AADgAAAAAAEAAPgAAAAABwAA/gAAAAAPAAD/AAAAAD8AAP/AAAAA/wAA/+AAAAH/AAD/4AAAAP8AAP/A - AAAA/wAA/8AAAAD/AAD/wAAAAP8AAP/AAAAA/wAA/4AAAAB/AAD/gAAAAH8AAP+AAAEAfwAA/4PwA/B/ - AAD///gD//8AAP//+Af//wAA///8D///AAD///wP//8AAP///h///wAA////P///AAD///////8AAP// - /////wAA - - - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.Designer.cs deleted file mode 100644 index 92e1ef533..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.Designer.cs +++ /dev/null @@ -1,155 +0,0 @@ -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - partial class NetSparkleMessageNotificationWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NetSparkleMessageNotificationWindow)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pbxApplicationIcon = new System.Windows.Forms.PictureBox(); - this.kwlMessage = new Krypton.Toolkit.KryptonWrapLabel(); - this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); - this.kbtnOk = new Krypton.Toolkit.KryptonButton(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); - this.kryptonPanel2.SuspendLayout(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kryptonTableLayoutPanel1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(542, 152); - this.kryptonPanel1.TabIndex = 1; - // - // kryptonTableLayoutPanel1 - // - this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); - this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel1.ColumnCount = 2; - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.Controls.Add(this.pbxApplicationIcon, 0, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlMessage, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonPanel2, 1, 1); - this.kryptonTableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; - this.kryptonTableLayoutPanel1.RowCount = 2; - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(542, 152); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // pbxApplicationIcon - // - this.pbxApplicationIcon.BackColor = System.Drawing.Color.Transparent; - this.pbxApplicationIcon.Location = new System.Drawing.Point(3, 3); - this.pbxApplicationIcon.Name = "pbxApplicationIcon"; - this.pbxApplicationIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.pbxApplicationIcon.Size = new System.Drawing.Size(48, 48); - this.pbxApplicationIcon.TabIndex = 0; - this.pbxApplicationIcon.TabStop = false; - // - // kwlMessage - // - this.kwlMessage.AutoSize = false; - this.kwlMessage.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlMessage.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlMessage.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlMessage.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlMessage.Location = new System.Drawing.Point(57, 0); - this.kwlMessage.Name = "kwlMessage"; - this.kwlMessage.Size = new System.Drawing.Size(482, 76); - this.kwlMessage.StateCommon.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlMessage.Text = "Sorry, either our server is having a problem, or your internet connection is inva" + - "lid."; - this.kwlMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // kryptonPanel2 - // - this.kryptonPanel2.Controls.Add(this.kbtnOk); - this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel2.Location = new System.Drawing.Point(57, 79); - this.kryptonPanel2.Name = "kryptonPanel2"; - this.kryptonPanel2.Size = new System.Drawing.Size(482, 70); - this.kryptonPanel2.TabIndex = 2; - // - // kbtnOk - // - this.kbtnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.kbtnOk.Location = new System.Drawing.Point(186, 25); - this.kbtnOk.Name = "kbtnOk"; - this.kbtnOk.Size = new System.Drawing.Size(90, 25); - this.kbtnOk.StateCommon.Content.ShortText.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kbtnOk.TabIndex = 0; - this.kbtnOk.Values.Text = "&OK"; - this.kbtnOk.Click += new System.EventHandler(this.kbtnOk_Click); - // - // NetSparkleMessageNotificationWindow - // - this.AcceptButton = this.kbtnOk; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(542, 152); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "NetSparkleMessageNotificationWindow"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Message"; - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); - this.kryptonPanel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private KryptonPanel kryptonPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pbxApplicationIcon; - private KryptonWrapLabel kwlMessage; - private KryptonPanel kryptonPanel2; - private KryptonButton kbtnOk; - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.cs deleted file mode 100644 index d41a6ffe9..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.cs +++ /dev/null @@ -1,63 +0,0 @@ -#region License - -/* - * The MIT License - * - * Copyright (c) 2022 Deadpikle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#endregion - -using Size = System.Drawing.Size; - -// ReSharper disable VirtualMemberCallInConstructor - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - public partial class NetSparkleMessageNotificationWindow : KryptonForm - { - public NetSparkleMessageNotificationWindow() - { - InitializeComponent(); - } - - public NetSparkleMessageNotificationWindow(string title, string message, Icon? applicationIcon = null) - { - InitializeComponent(); - - Text = title; - - if (applicationIcon != null) - { - Icon = applicationIcon; - - pbxApplicationIcon.Image = new Icon(applicationIcon, new Size(48, 48)).ToBitmap(); - } - - kwlMessage.Text = message; - } - - private void kbtnOk_Click(object sender, EventArgs e) - { - Close(); - } - } -} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.resx deleted file mode 100644 index 057c9be0c..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleMessageNotificationWindow.resx +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - iVBORw0KGgoAAAANSUhEUgAAAh4AAACYCAYAAACrteCmAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALhSURBVHhe7drBCYAwFAVB202N9mAZtqEoKHg3e5rDENLB - 8vjLuu3HGOPl7+/v7+/v7z/rvzwfAICZhAcAkBEeAEDqvvEAAJjN4gEAZIQHAJARHgBAyo0HAJCweAAA - GeEBAGSEBwCQcuMBACQsHgBARngAABnhAQCk3HgAAAmLBwCQER4AQEZ4AAApNx4AQMLiAQBkhAcAkBEe - AEDKjQcAkLB4AAAZ4QEAZIQHAJBy4wEAJCweAEBGeAAAGeEBAKTceAAACYsHAJARHgBARngAACk3HgBA - wuIBAGSEBwCQER4AQMqNBwCQsHgAABnhAQBkhAcAkHLjAQAkLB4AQEZ4AAAZ4QEApNx4AAAJiwcAkBEe - AEBGeAAAKTceAEDC4gEAZIQHAJARHgBAyo0HAJCweAAAGeEBAGSEBwCQcuMBACQsHgBARngAABnhAQCk - 3HgAAAmLBwCQER4AQEZ4AAApNx4AQMLiAQBkhAcAkBEeAEDKjQcAkLB4AAAZ4QEAZIQHAJBy4wEAJCwe - AEBGeAAAGeEBAKTceAAACYsHAJARHgBARngAACk3HgBAwuIBAGSEBwCQER4AQMqNBwCQsHgAABnhAQBk - hAcAkHLjAQAkLB4AQEZ4AAAZ4QEApNx4AAAJiwcAkBEeAEBGeAAAKTceAEDC4gEAZIQHAJARHgBAyo0H - AJCweAAAGeEBAGSEBwCQcuMBACQsHgBARngAABnhAQCk3HgAAAmLBwCQER4AQEZ4AAApNx4AQMLiAQBk - hAcAkBEeAEDKjQcAkLB4AAAZ4QEAZIQHAJBy4wEAJCweAEBGeAAAGeEBAKTceAAACYsHAJARHgBARngA - ACk3HgBAwuIBAGSEBwCQER4AQMqNBwCQsHgAABnhAQBkhAcAkHLjAQAkLB4AQEZ4AAAZ4QEApNx4AAAJ - iwcAkBEeAEBGeAAAKTceAEDC4gEAZIQHAJD5hMf1Pvz9/f39/f39///vxwm5kRbuDXHmUwAAAABJRU5E - rkJggg== - - - - - AAABAAIAEBAAAAAAIABoBAAAJgAAADAwAAAAACAAqCUAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE - AADXDQAA1w0AAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AABczlIAXM5i////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczg8BXs/tAV3P9ABc - zhf///8A////AP///wD///8A////AP///wD///8A////AABczmIAXM5rAFzOMwBczgUAXc+fDW3a9xBx - 3fkBXtCwAFzOAwBczjAAXM5nAFzOb////wD///8A////AP///wAAXM50A1/Q/Adi0PoBXs/6A1/Q+h+I - 8v8givP/BWHR+QFez/kGYdD7BGHR/ABczoz///8A////AP///wD///8AAFzOPAVh0fcji/b/I4fw/yCF - 7v8Xhfb/E4P2/yGF7/8ih/D/I4v2/whl1PMAXM5Q////AP///wD///8A////AABczgkAXM78K43y/xWG - 9v8Thfb/a7T6/2q0+v8Thfb/EoT1/y+S9f8BXc7+AFzOFv///wD///8A////AABczhUAXc+nB2LQ+jST - 8f8fjff/bbf7/83q///N6v//bbf7/xmK9v83lvT/CmTS+QFe0LMAXM4a////AABczmMCXs/zIHrf+EWf - 9v80mvj/crr7/83q///N6v//zer//83q//9xuvv/MZj4/0ah9v8lf+H6Al7P9gBczm8AXM5jAV3P8yJ7 - 3/hOpvf/QaL5/x+S+P8bkPj/zer//83q//8bkPj/HZH4/z2h+f9QqPf/JoDi+gJez/YAXM5v////AABc - zhUBXs+nCGPR+lKm9P85ofn/IZb4/83q///N6v//IZb4/zKe+f9Xq/X/C2XT+QJf0LMAXM4a////AP// - /wD///8AAFzOCQBdzvxisvb/Qaj6/0Cn+v+/5P7/v+T+/0Cn+v8+pvr/aLj5/wNez/4AXM4W////AP// - /wD///8A////AABczjwQaNP3dcH8/2y49v9ms/T/Xrf7/1e0+/9otPX/a7f2/3TB+/8cc9j0AFzOUP// - /wD///8A////AP///wAAXM50CmPR/BJp0/oCXs/6CmTR+nG9+f90wPr/EGjS+QFdz/kPZ9L7DWbS/ABc - zoz///8A////AP///wD///8AAFzOYgBczmsAXM4zAFzOBQJfz54xhd/4PI7j+QJf0LAAXM4DAFzOMABc - zmcAXM5v////AP///wD///8A////AP///wD///8A////AP///wAAXM4PAl/P7QRfz/QAXM4X////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczlAAXM5g////AP// - /wD///8A////AP///wD///8A////AP5/AAD8PwAAwAMAAMADAADAAwAAwAMAAIABAAAAAAAAAAAAAIAB - AADAAwAAwAMAAMADAADAAwAA/D8AAP5/AAAoAAAAMAAAAGAAAAABACAAAAAAAAAkAAASCwAAEgsAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAEAAAACAAAAAwAAAAMAAAAEAAAABQAAAAYAAAAHAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACAAA - AAgAAAAHAAAABwAAAAcAAAAGAAAABQAAAAQAAAADAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACQAAAAoAAAALAAAADAAAAA0AAAANAAAADgAA - AA4AAAAOAAAADgAAAA0AAAANAAAADAAAAAsAAAAKAAAACQAAAAcAAAAGAAAABQAAAAQAAAADAAAAAgAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAAAwAAAAUAAAAHAAAACAAAAAoAAAAMAAAADQAAAA8AAAARAAAAEgAA - ABQAAAAVAEacRQBOr2IAAAAWAAAAFQAAABUAAAAUAAAAEgAAABEAAAAPAAAADQAAAAwAAAAKAAAACAAA - AAcAAAAFAAAAAwAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAgAAAAKAAAADAAAAA8AAAARAAAAFAAA - ABYAAAAZAAAAGwAAABwACxkiAVzL3AJezfEAIkwuAAAAHgAAAB4AAAAcAAAAGwAAABkAAAAWAAAAFAAA - ABEAAAAPAAAADAAAAAoAAAAIAAAABgAAAAQAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAGAAAACQAAAAsAAAAOAAAAEQAA - ABUAAAAYAAAAGwAAAB4AAAAhAAAAJAAAACYAT7CNDGjU+BJv2PkBVb2wAAAAKAAAACcAAAAmAAAAJAAA - ACEAAAAeAAAAGwAAABgAAAAVAAAAEQAAAA4AAAALAAAACQAAAAYAAAAEAAAAAwAAAAIAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAABAAAAAYAAAAJAAAADAAA - ABAAAAATAAAAFwAAABsAAAAfAAAAIwAAACYAAAAqAAAALQArYUwCXc76Jozw/yqR8/8GYc/8ADqCZwAA - ADIAAAAvAAAALQAAACoAAAAmAAAAIwAAAB8AAAAbAAAAFwAAABMAAAAQAAAADAAAAAkAAAAGAAAABAAA - AAIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABQAA - AAgAAAAMAAAADwAAABQAAAAYAAAAHQAAACEAAAAmAAAAKgAAAC4AAAAyAAAANgFYw9MaeN/8JpT4/yGR - 9/8fgOX+AlzJ6QALGUEAAAA5AAAANgAAADIAAAAuAAAAKgAAACYAAAAhAAAAHQAAABgAAAAUAAAADwAA - AAwAAAAIAAAABQAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAMAAAAEAAAABwAAAAoAAAAOAAAAEgAAABcAAAAcAAAAIQAAACYAAAAsAAAAMAAAADUAAAA5AEOWiAlj - 0foqk/X/Fov3/xOJ9/8plPf/EGrU+QBMqKgAAABAAAAAPQAAADkAAAA1AAAAMAAAACwAAAAmAAAAIQAA - ABwAAAAXAAAAEgAAAA4AAAAKAAAABwAAAAQAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAQAAAAMAAAAFAFO6QABIoSwAAAAQAAAAFQAAABoAAAAfAAAAJQAAACoAAAAvAAAANAAA - ADkAHD5QAV3N9yWH6/8djvf/EIf3/xCH9/8Xi/f/KY3w/wRfz/wAKVxnAAAAQgAAAD4AAAA5AAAANAAA - AC8AAAAqAAAAJQAAAB8AAAAaADZ6LgBOr08AAAALAAAACAAAAAUAAAADAAAAAQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAFAFrJkQJdzv8DX8/xAVvJvwBSuIcAQpVZABUwLwAA - ACwAAAAyAAAANwAAADwBVLvFFnLb+ieR+P8Ohff/DoX3/w6F9/8Ohff/Io/4/x574v0AWMTfAAMGRgAA - AEAAAAA8AAAANwAMGjgAOoFbAE6uhwBYxLsCXs7tA17P/wBaybYAAAAMAAAACAAAAAUAAAADAAAAAgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAFAFbCWQZj0vcpi+//I4Hm/xl0 - 2/gQaNL5B2DP/gJcyuAAUretAESXgABEmIoGYc/8KpD0/xKG9v8Lg/b/C4P2/wuD9v8Lg/b/DoT2/ymR - 9f8NZ9L6AEiiogA+i4EATq+rAVrH3AZgz/wNZdH7GHLZ+CF/5f8piu7/DWvY+ABVv34AAAAMAAAACAAA - AAUAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAAFAEihIQBc - zv8oj/X/G4r3/xyL9/8kj/f/Ko3y/yiG6v8feuH8FG3V+A9m0f4jguj/HYv3/wmB9v8Jgfb/CYH2/wmB - 9v8Jgfb/CYH2/xeI9v8miO3/EGbR/xNr1PgdeOD8JoXp/ymM8f8lj/f/HYv3/xiJ9/8sk/f/BGDQ+gBM - q0gAAAALAAAACAAAAAUAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAIAAAAEAAAABwBdz+ofhOz/GYj3/wd/9v8Hf/b/CID2/w+D9v8YiPf/H4z3/yWN9f8Ziff/CYD2/wd/ - 9v8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/9v8Xh/f/JIz1/yCM9/8ZiPf/EIT2/wiA9v8Hf/b/B3/2/xOF - 9v8ni/H/AFzO/AAiTBYAAAAKAAAABwAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAABQBczK4WeOL/IIv2/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/xmI9/8df+n/AF3O1gAAAAsAAAAIAAAABQAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAABABZyG8Ladj1KI/2/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/yGL9v8Uc9/8AFnHlwAAAAkAAAAGAAAABAAAAAIAAAABAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwBWwjUCXs/8LZD2/wd9 - 9f8BevX/AXn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/xSF9v8AefX/AHn1/wB5 - 9f8AefX/AHn1/wB59f8BefX/AXn1/wF69f8BevX/Anv1/yuQ9/8KZtX1AFfCXAAAAAYAAAAEAAAAAwAA - AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgA1 - dwcAXM/4KIrw/xSE9v8De/X/A3v1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/RaT6/43P - /v9NqPn/A3z1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/A3v1/wN79f8De/X/C3/1/y+R9P8CXc7/AE6vIwAA - AAQAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAXc/IIH/o/yCL9/8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/BX32/wuA - 9v9gtPv/jtD+/47Q/v+O0P7/YLT7/wmA9v8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/GYf3/ymJ - 7v8AXc/tAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAXM2XGHTe+iyS9/8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/F4j3/3TA/P+O0P7/jtD+/47Q/v+O0P7/jtD+/2+9/P8Rhff/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/I473/yJ/5v8AXc7EAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOFABdz6YHYdD8Lojo/iKO9/8Jgfb/CYH2/wmB - 9v8Jgfb/CYH2/wmB9v8plPj/g8n9/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v96xf3/HIz3/wmB - 9v8Jgfb/CYH2/wmB9v8Jgfb/GIn3/zWP7f8LZdL6AF3PwQBcziIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM5fAV7P8hx02/k7l/P/LJT3/w+E - 9v8Mg/b/DIP2/wyD9v8Mg/b/DIP2/0Ci+v+Lz/7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/hMr9/ymU+P8Mg/b/DIP2/wyD9v8Mg/b/DYP2/yeR9/89mfX/I3zf+wNf0PoAXM54AFzOBAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJQFe0MUMZdL5NI3r/zyc - +f8djfj/DoX3/w6F9/8Ohff/DoX3/w6F9/8Qhvf/WbH7/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/4rN/v85nvr/DoX3/w6F9/8Ohff/DoX3/w6F9/8Xivf/OJr4/zqT - 7/8TbNX4AV7Q2ABczjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczgUAXc9+Al7P+yZ+ - 4PxEnvb/Lpb4/xKI9/8Qh/f/EIf3/xCH9/8Qh/f/EIf3/xiM+P9qvPz/is7+/4rO/v+Lz/7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/i8/+/4rO/v+Kzv7/Rqf6/xCH9/8Qh/f/EIf3/xCH - 9/8Qh/f/EIf3/yeT+P9Dn/f/LYXl/QZgz/0AXc+VAFzODQAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOOwFe - 0N0TbNb4Ppjw/z+f+f8dj/f/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ - 9/89ovr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/OZ/6/xKJ9/8Siff/Eon3/xKJ - 9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8ZjPf/OJz4/0Oc8/8cdNn5AV3P6wBczk4AAAAAAAAAAAAA - AAAAXM4QAFzOzQNez/44k+7/Taf5/y2X+P8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL - 9/8Vi/f/FYv3/xWL9/8/o/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/O6D6/xWL - 9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/JJL4/0ml+f9AmfH/CmTS/QBd - z98AXM4iAAAAAAAAAAAAAAAAAFzOAwBcznIAXc/4Hnnf+kqk9/9Dovn/H5H4/xeN+P8Xjfj/F434/xeN - +P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P9ApPr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/PaL6/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xyP+P86nvn/Tqf4/yiD - 5PsBXs/7AF3PiABczgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4eAV7PuAZh0fk2j+v/Uqv6/zWd - +f8aj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P9Bpvr/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/PqP6/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/Lpn5/06p - +v9AmO//DGbT+AFe0M4AXM4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABc - zlIBXs/rGXPa+E2k9P9Nqfr/KJf4/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/xyR+P9Dp/r/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKX6/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/yOU - +P9Hpvn/Uqj2/yN83voBXc/1AFzOaQBczgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM4NAV3PlgNf0Pwyi+b9WK75/zGc+f8ek/j/HpP4/x6T+P8ek/j/HpP4/x6T - +P9Ep/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKb6/x6T+P8ek/j/HpP4/x6T - +P8ek/j/J5f4/1iu+v89k+v/CGLQ+wFe0LAAXM4ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczjUBXtDcLoLg+0yq+v8glfn/IJX5/yCV - +f8glfn/IJX5/yCV+f8sm/r/i87+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+Jzf7/KZn5/yCV - +f8glfn/IJX5/yCV+f8glfn/QKT6/z+R5/8BXs/tAFzOSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXc+hMYnl/U6s - +v8il/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/K5z5/z2l+/89pfv/PaX7/z2l+/89pfv/PaX7/z2l - +v8pm/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/Qqb6/0KX7P8CX9DPAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAACX9DhSZ7u/0Sn+v8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ - +f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/OKL6/1qr9P8AXc77AFzOBgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczhIAXM7+YLH3/zij+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb - +f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/K535/2e4 - +v8LZNH7AFzONwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczksQadP4arv8/yyf+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/2C2+/8le9z3AFzOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczoUsg+D6Yrf7/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/1Wy+/8+k+f/Al7QrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJf0MlGm+v/VrP7/y6h - +v8uofr/LqH6/y6h+v8wovr/Paj6/0es+/80pPr/LqH6/y6h+v8uofr/LqH6/y6h+v8uofr/LqH6/y6h - +v8wovr/Rav7/z+p+v8xovr/LqH6/y6h+v8uofr/LqH6/0mt+/9ZqfH/Al7Q6gAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOBAFd - z/lhsfT/Sa77/zam+v9Grfv/VbT7/2W6+/9xv/r/arT0/1ul7P9vu/j/Q6z6/zCj+v8wo/r/MKP6/zCj - +v8wo/r/MKP6/zmn+v9vvfr/XKXs/2ay8/9xvvr/aLz7/1m1+/9Kr/v/O6j6/z2p+v9wvfn/A17P/wBc - zhsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAFzOMwZg0Px2wvz/csH8/3K9+P9irvH/SJfn/S1+2/YSaNH+A1/P8wFez+M1iOH6br/8/zWm - +/8ypfv/MqX7/zKl+/8ypfv/MqX7/2W7/P9JmOj9Al/P6wJez+4OZdH/J3ra9kWU5vxeqvD/crv4/3TC - /P93w/z/GXDW9wBczlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzObRBo0/w9jOL4H3LW+Qhh0P0DYNDaAV3PmgBczl8AXM4nAFzOAQBc - zhgCX8/1X63x/1q3/P81p/v/Naf7/zWn+/81p/v/TrL7/2249f8IYdD8AFzOMwAAAAAAXM4eAFzOVwBd - zpEDYNDTB2HP+xtv1fo4ieD3HnTX/QBdzo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOkwJf0LoAXM56AFzOQQBczgwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM5jFmzU+HfC+v9Er/v/N6n7/zep+/88q/v/dML8/yl82/gBXc+NAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzOBwBczjoAXM5yAl/QsgBdzrEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl/QxkOV5vxvwvz/Oqv7/zmr+/9jvfz/WKTs/gJf - z+QAXM4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJAVg0PltuPX/Wbn8/020 - /P92wPj/DmbR+wBczkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFd - zngjeNn4e8f8/3fH/f84iOD4Al7PowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczgQCX9DXUqHr/WSv8f8EX8/vAFzOEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4zCmTR+xZr1PkAXM5XAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV7PjwJfz7kAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAD/AAD/wAAAAD8AAP+A - AAAAHwAA/wAAAAAPAAD+AAAAAAcAAPwAAAAAAwAA/AAAAAADAAD8AAAAAAMAAPgAAAAAAQAA+AAAAAAB - AAD4AAAAAAEAAPgAAAAAAQAA/AAAAAADAAD8AAAAAAMAAPwAAAAAAwAA/gAAAAAHAAD/AAAAAA8AAP+A - AAAAHwAA/8AAAAA/AAD/gAAAAH8AAP8AAAAAHwAA/AAAAAAPAADwAAAAAAMAAOAAAAAAAQAAwAAAAAAA - AADgAAAAAAEAAPgAAAAABwAA/gAAAAAPAAD/AAAAAD8AAP/AAAAA/wAA/+AAAAH/AAD/4AAAAP8AAP/A - AAAA/wAA/8AAAAD/AAD/wAAAAP8AAP/AAAAA/wAA/4AAAAB/AAD/gAAAAH8AAP+AAAEAfwAA/4PwA/B/ - AAD///gD//8AAP//+Af//wAA///8D///AAD///wP//8AAP///h///wAA////P///AAD///////8AAP// - /////wAA - - - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.Designer.cs deleted file mode 100644 index 89546564f..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.Designer.cs +++ /dev/null @@ -1,166 +0,0 @@ -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - partial class NetSparkleToastNotifierWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NetSparkleToastNotifierWindow)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.kryptonTableLayoutPanel2 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pbxApplicationIcon = new System.Windows.Forms.PictureBox(); - this.kllCallToAction = new Krypton.Toolkit.KryptonLinkLabel(); - this.kwlMessage = new Krypton.Toolkit.KryptonWrapLabel(); - this.imageList1 = new System.Windows.Forms.ImageList(this.components); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).BeginInit(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kryptonTableLayoutPanel1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(330, 100); - this.kryptonPanel1.TabIndex = 1; - // - // kryptonTableLayoutPanel1 - // - this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); - this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel1.ColumnCount = 2; - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonTableLayoutPanel2, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.pbxApplicationIcon, 0, 0); - this.kryptonTableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; - this.kryptonTableLayoutPanel1.RowCount = 1; - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(330, 100); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // kryptonTableLayoutPanel2 - // - this.kryptonTableLayoutPanel2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel2.BackgroundImage"))); - this.kryptonTableLayoutPanel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel2.ColumnCount = 1; - this.kryptonTableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel2.Controls.Add(this.kllCallToAction, 0, 1); - this.kryptonTableLayoutPanel2.Controls.Add(this.kwlMessage, 0, 0); - this.kryptonTableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel2.Location = new System.Drawing.Point(73, 3); - this.kryptonTableLayoutPanel2.Name = "kryptonTableLayoutPanel2"; - this.kryptonTableLayoutPanel2.RowCount = 2; - this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel2.Size = new System.Drawing.Size(254, 94); - this.kryptonTableLayoutPanel2.TabIndex = 0; - // - // pbxApplicationIcon - // - this.pbxApplicationIcon.BackColor = System.Drawing.Color.Transparent; - this.pbxApplicationIcon.Location = new System.Drawing.Point(3, 3); - this.pbxApplicationIcon.Name = "pbxApplicationIcon"; - this.pbxApplicationIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.pbxApplicationIcon.Size = new System.Drawing.Size(64, 64); - this.pbxApplicationIcon.TabIndex = 2; - this.pbxApplicationIcon.TabStop = false; - // - // kllCallToAction - // - this.kllCallToAction.Dock = System.Windows.Forms.DockStyle.Fill; - this.kllCallToAction.LabelStyle = Krypton.Toolkit.LabelStyle.NormalPanel; - this.kllCallToAction.Location = new System.Drawing.Point(3, 72); - this.kllCallToAction.Name = "kllCallToAction"; - this.kllCallToAction.Size = new System.Drawing.Size(248, 19); - this.kllCallToAction.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kllCallToAction.TabIndex = 0; - this.kllCallToAction.Values.Text = "kryptonLinkLabel1"; - this.kllCallToAction.LinkClicked += new System.EventHandler(this.kllCallToAction_LinkClicked); - // - // kwlMessage - // - this.kwlMessage.AutoSize = false; - this.kwlMessage.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlMessage.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlMessage.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlMessage.LabelStyle = Krypton.Toolkit.LabelStyle.NormalControl; - this.kwlMessage.Location = new System.Drawing.Point(3, 0); - this.kwlMessage.Name = "kwlMessage"; - this.kwlMessage.Size = new System.Drawing.Size(248, 69); - this.kwlMessage.StateCommon.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlMessage.Text = "kryptonWrapLabel1"; - this.kwlMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // imageList1 - // - this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; - this.imageList1.ImageSize = new System.Drawing.Size(16, 16); - this.imageList1.TransparentColor = System.Drawing.Color.Transparent; - // - // NetSparkleToastNotifierWindow - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(330, 100); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "NetSparkleToastNotifierWindow"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.Click += new System.EventHandler(this.NetSparkleToastNotifierWindow_Click); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel2.ResumeLayout(false); - this.kryptonTableLayoutPanel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private KryptonPanel kryptonPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel2; - private PictureBox pbxApplicationIcon; - private KryptonLinkLabel kllCallToAction; - private KryptonWrapLabel kwlMessage; - private ImageList imageList1; - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.cs deleted file mode 100644 index e199e9901..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.cs +++ /dev/null @@ -1,177 +0,0 @@ -#region License - -/* - * The MIT License - * - * Copyright (c) 2022 Deadpikle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#endregion - -using Size = System.Drawing.Size; -using Timer = System.Windows.Forms.Timer; - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - public partial class NetSparkleToastNotifierWindow : KryptonForm - { - #region Instance Fields - - private Timer _goUpTimer; - private Timer _goDownTimer; - private Timer _pauseTimer; - private int _startPosX; - private int _startPosY; - - #endregion - - #region Public - - public Action> ClickAction { get; set; } - - public List Updates { get; set; } - - #endregion - - #region Identity - - public NetSparkleToastNotifierWindow(Icon? applicationIcon = null) - { - InitializeComponent(); - - TopMost = true; - - _goUpTimer = new Timer(); - - _goDownTimer = new Timer(); - - _pauseTimer = new Timer(); - - _goUpTimer.Interval = 25; - - _goDownTimer.Interval = 25; - - _pauseTimer.Interval = 15000; - - _goUpTimer.Tick += GoUpTimer_Tick; - - _goDownTimer.Tick += GoDownTimer_Tick; - - _pauseTimer.Tick += PauseTimer_Tick; - - if (applicationIcon != null) - { - Icon = applicationIcon; - - pbxApplicationIcon.Image = new Icon(applicationIcon, new Size(64, 64)).ToBitmap(); - } - else - { - pbxApplicationIcon.Visible = false; - } - } - - #endregion - - #region Implementation - - private void PauseTimer_Tick(object sender, EventArgs e) - { - _pauseTimer.Stop(); - - _goDownTimer.Start(); - } - - private void GoDownTimer_Tick(object sender, EventArgs e) - { - //Lower window by 5 pixels - _startPosY += 5; - //If window is fully visible stop the timer - if (_startPosY > Screen.PrimaryScreen.WorkingArea.Height) - { - _goDownTimer.Stop(); - Close(); - } - else - { - SetDesktopLocation(_startPosX, _startPosY); - } - } - - private void GoUpTimer_Tick(object sender, EventArgs e) - { - //Lift window by 5 pixels - _startPosY -= 5; - //If window is fully visible stop the timer - if (_startPosY < Screen.PrimaryScreen.WorkingArea.Height - Height) - { - _goUpTimer.Stop(); - _pauseTimer.Start(); - } - else - { - SetDesktopLocation(_startPosX, _startPosY); - } - } - - private void kllCallToAction_LinkClicked(object sender, EventArgs e) => NetSparkleToastNotifierWindow_Click(null, null); - - private void NetSparkleToastNotifierWindow_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Yes; - ClickAction.Invoke(Updates); - Close(); - } - - /// - /// Show the toast - /// - /// Main message of the toast - /// Text of the hyperlink - /// How long to show before it goes back down - public void Show(string message, string callToAction, int seconds) - { - kwlMessage.Text = message; - kllCallToAction.Text = callToAction; - _pauseTimer.Interval = 1000 * seconds; - Show(); - } - - #endregion - - #region Protected - - protected override void OnLoad(EventArgs e) - { - _startPosX = Screen.PrimaryScreen.WorkingArea.Width - Width; - - _startPosY = Screen.PrimaryScreen.WorkingArea.Height; - - SetDesktopLocation(_startPosX, _startPosY); - - base.OnLoad(e); - - _goUpTimer.Start(); - } - - #endregion - } -} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.Designer.cs deleted file mode 100644 index 901585876..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.Designer.cs +++ /dev/null @@ -1,231 +0,0 @@ -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - partial class NetSparkleUpdateAvailableWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NetSparkleUpdateAvailableWindow)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kryptonTableLayoutPanel1 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.pbxApplicationIcon = new System.Windows.Forms.PictureBox(); - this.kwlReleaseNotes = new Krypton.Toolkit.KryptonLabel(); - this.kwlHeader = new Krypton.Toolkit.KryptonLabel(); - this.kwbReleaseNotes = new Krypton.Toolkit.KryptonWebBrowser(); - this.kryptonTableLayoutPanel2 = new Krypton.Toolkit.KryptonTableLayoutPanel(); - this.kbtnSkipVersion = new Krypton.Toolkit.KryptonButton(); - this.kbtnRemindLater = new Krypton.Toolkit.KryptonButton(); - this.kbtnInstallUpdate = new Krypton.Toolkit.KryptonButton(); - this.kwlInformationText = new Krypton.Toolkit.KryptonLabel(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.kryptonTableLayoutPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).BeginInit(); - this.kryptonTableLayoutPanel2.SuspendLayout(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kryptonTableLayoutPanel1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(604, 556); - this.kryptonPanel1.TabIndex = 1; - // - // kryptonTableLayoutPanel1 - // - this.kryptonTableLayoutPanel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel1.BackgroundImage"))); - this.kryptonTableLayoutPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel1.ColumnCount = 2; - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.Controls.Add(this.pbxApplicationIcon, 0, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlReleaseNotes, 1, 2); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlHeader, 1, 0); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwbReleaseNotes, 1, 3); - this.kryptonTableLayoutPanel1.Controls.Add(this.kryptonTableLayoutPanel2, 1, 4); - this.kryptonTableLayoutPanel1.Controls.Add(this.kwlInformationText, 1, 1); - this.kryptonTableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonTableLayoutPanel1.Name = "kryptonTableLayoutPanel1"; - this.kryptonTableLayoutPanel1.RowCount = 5; - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F)); - this.kryptonTableLayoutPanel1.Size = new System.Drawing.Size(604, 556); - this.kryptonTableLayoutPanel1.TabIndex = 0; - // - // pbxApplicationIcon - // - this.pbxApplicationIcon.BackColor = System.Drawing.Color.Transparent; - this.pbxApplicationIcon.Location = new System.Drawing.Point(3, 3); - this.pbxApplicationIcon.Name = "pbxApplicationIcon"; - this.pbxApplicationIcon.Padding = new System.Windows.Forms.Padding(5, 5, 0, 0); - this.pbxApplicationIcon.Size = new System.Drawing.Size(32, 32); - this.pbxApplicationIcon.TabIndex = 0; - this.pbxApplicationIcon.TabStop = false; - // - // kwlReleaseNotes - // - this.kwlReleaseNotes.AutoSize = false; - this.kwlReleaseNotes.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlReleaseNotes.LabelStyle = Krypton.Toolkit.LabelStyle.NormalPanel; - this.kwlReleaseNotes.Location = new System.Drawing.Point(41, 72); - this.kwlReleaseNotes.Name = "kwlReleaseNotes"; - this.kwlReleaseNotes.Size = new System.Drawing.Size(560, 20); - this.kwlReleaseNotes.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 12.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlReleaseNotes.TabIndex = 3; - this.kwlReleaseNotes.Values.Text = "kryptonLabel3"; - // - // kwlHeader - // - this.kwlHeader.AutoSize = false; - this.kwlHeader.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlHeader.LabelStyle = Krypton.Toolkit.LabelStyle.NormalPanel; - this.kwlHeader.Location = new System.Drawing.Point(41, 3); - this.kwlHeader.Name = "kwlHeader"; - this.kwlHeader.Size = new System.Drawing.Size(560, 32); - this.kwlHeader.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlHeader.TabIndex = 1; - this.kwlHeader.Values.Text = "kryptonLabel1"; - // - // kwbReleaseNotes - // - this.kwbReleaseNotes.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwbReleaseNotes.IsWebBrowserContextMenuEnabled = false; - this.kwbReleaseNotes.Location = new System.Drawing.Point(41, 98); - this.kwbReleaseNotes.Name = "kwbReleaseNotes"; - this.kwbReleaseNotes.Size = new System.Drawing.Size(560, 415); - this.kwbReleaseNotes.TabIndex = 4; - // - // kryptonTableLayoutPanel2 - // - this.kryptonTableLayoutPanel2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("kryptonTableLayoutPanel2.BackgroundImage"))); - this.kryptonTableLayoutPanel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.kryptonTableLayoutPanel2.ColumnCount = 3; - this.kryptonTableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.kryptonTableLayoutPanel2.Controls.Add(this.kbtnSkipVersion, 0, 0); - this.kryptonTableLayoutPanel2.Controls.Add(this.kbtnRemindLater, 1, 0); - this.kryptonTableLayoutPanel2.Controls.Add(this.kbtnInstallUpdate, 2, 0); - this.kryptonTableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonTableLayoutPanel2.Location = new System.Drawing.Point(41, 519); - this.kryptonTableLayoutPanel2.Name = "kryptonTableLayoutPanel2"; - this.kryptonTableLayoutPanel2.RowCount = 1; - this.kryptonTableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.kryptonTableLayoutPanel2.Size = new System.Drawing.Size(560, 34); - this.kryptonTableLayoutPanel2.TabIndex = 9; - // - // kbtnSkipVersion - // - this.kbtnSkipVersion.Dock = System.Windows.Forms.DockStyle.Left; - this.kbtnSkipVersion.Location = new System.Drawing.Point(3, 3); - this.kbtnSkipVersion.Name = "kbtnSkipVersion"; - this.kbtnSkipVersion.Size = new System.Drawing.Size(141, 28); - this.kbtnSkipVersion.TabIndex = 0; - this.kbtnSkipVersion.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.hand_point; - this.kbtnSkipVersion.Values.Text = "&Skip this version"; - this.kbtnSkipVersion.Click += new System.EventHandler(this.kbtnSkipVersion_Click); - // - // kbtnRemindLater - // - this.kbtnRemindLater.Dock = System.Windows.Forms.DockStyle.Right; - this.kbtnRemindLater.Location = new System.Drawing.Point(259, 3); - this.kbtnRemindLater.Name = "kbtnRemindLater"; - this.kbtnRemindLater.Size = new System.Drawing.Size(146, 28); - this.kbtnRemindLater.TabIndex = 1; - this.kbtnRemindLater.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.clock_play; - this.kbtnRemindLater.Values.Text = "R&emind me later"; - this.kbtnRemindLater.Click += new System.EventHandler(this.kbtnRemindLater_Click); - // - // kbtnInstallUpdate - // - this.kbtnInstallUpdate.Dock = System.Windows.Forms.DockStyle.Right; - this.kbtnInstallUpdate.Location = new System.Drawing.Point(411, 3); - this.kbtnInstallUpdate.Name = "kbtnInstallUpdate"; - this.kbtnInstallUpdate.Size = new System.Drawing.Size(146, 28); - this.kbtnInstallUpdate.TabIndex = 2; - this.kbtnInstallUpdate.Values.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.download; - this.kbtnInstallUpdate.Values.Text = "&Install update"; - this.kbtnInstallUpdate.Click += new System.EventHandler(this.kbtnInstallUpdate_Click); - // - // kwlInformationText - // - this.kwlInformationText.AutoSize = false; - this.kwlInformationText.Dock = System.Windows.Forms.DockStyle.Fill; - this.kwlInformationText.LabelStyle = Krypton.Toolkit.LabelStyle.NormalPanel; - this.kwlInformationText.Location = new System.Drawing.Point(41, 41); - this.kwlInformationText.Name = "kwlInformationText"; - this.kwlInformationText.Size = new System.Drawing.Size(560, 25); - this.kwlInformationText.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlInformationText.TabIndex = 11; - this.kwlInformationText.Values.Text = "kryptonLabel2"; - // - // NetSparkleUpdateAvailableWindow - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(604, 556); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "NetSparkleUpdateAvailableWindow"; - this.ShowInTaskbar = false; - this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Update Available"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.NetSparkleUpdateAvailableWindow_FormClosing); - this.Controls.SetChildIndex(this.kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonTableLayoutPanel1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pbxApplicationIcon)).EndInit(); - this.kryptonTableLayoutPanel2.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private KryptonPanel kryptonPanel1; - private KryptonTableLayoutPanel kryptonTableLayoutPanel1; - private PictureBox pbxApplicationIcon; - private KryptonLabel kwlReleaseNotes; - private KryptonLabel kwlHeader; - private KryptonWebBrowser kwbReleaseNotes; - private KryptonTableLayoutPanel kryptonTableLayoutPanel2; - private KryptonButton kbtnSkipVersion; - private KryptonButton kbtnRemindLater; - private KryptonButton kbtnInstallUpdate; - private KryptonLabel kwlInformationText; - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.cs deleted file mode 100644 index 20af4730f..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.cs +++ /dev/null @@ -1,325 +0,0 @@ -#region License - -/* - * The MIT License - * - * Copyright (c) 2022 Deadpikle - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#endregion - -using MethodInvoker = System.Windows.Forms.MethodInvoker; -using Application = System.Windows.Forms.Application; -using Size = System.Drawing.Size; -// ReSharper disable InconsistentNaming - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater -{ - public partial class NetSparkleUpdateAvailableWindow : KryptonForm, IUpdateAvailable - { - #region Instance Fields - - private readonly SparkleUpdater _sparkle; - private readonly List _updates; - private System.Windows.Forms.Timer _ensureDialogShownTimer; - private string _releaseNotesHTMLTemplate; - private string _additionalReleaseNotesHeaderHTML; - private string _releaseNotesDateFormat; - - /// - /// Template for HTML code drawing release notes separator. {0} used for version number, {1} for publication date - /// - private CancellationToken _cancellationToken; - private CancellationTokenSource _cancellationTokenSource; - - private bool _didSendResponse; - - #endregion - - #region Public - - /// - /// Object responsible for downloading and formatting markdown release notes for display in HTML - /// - public ReleaseNotesGrabber? ReleaseNotesGrabber { get; set; } - - AppCastItem IUpdateAvailable.CurrentItem => CurrentItem; - - #endregion - - #region Identity - - public NetSparkleUpdateAvailableWindow(SparkleUpdater sparkle, List items, Icon? applicationIcon = null, bool isUpdateAlreadyDownloaded = false, - string releaseNotesHTMLTemplate = "", string additionalReleaseNotesHeaderHTML = "", string releaseNotesDateFormat = "D") - { - InitializeComponent(); - - _sparkle = sparkle; - _updates = items; - _releaseNotesHTMLTemplate = releaseNotesHTMLTemplate; - _additionalReleaseNotesHeaderHTML = additionalReleaseNotesHeaderHTML; - _releaseNotesDateFormat = releaseNotesDateFormat; - - kwbReleaseNotes.Text = @"Release Notes:"; - - try - { - kwbReleaseNotes.AllowWebBrowserDrop = false; - - kwbReleaseNotes.AllowNavigation = false; - } - catch (Exception e) - { - _sparkle.LogWriter.PrintMessage($@"Error in browser init: {e.Message}"); - } - - AppCastItem? castItem = items.FirstOrDefault()!; - - var downloadInstallText = isUpdateAlreadyDownloaded ? @"install" : @"download"; - - kwlHeader.Text = kwlHeader.Text.Replace("APP", castItem != null ? castItem.AppName : "the application"); - - if (castItem != null) - { - string versionString = string.Empty; - - try - { - Version version = new(castItem.Version); - - versionString = Utilities.GetVersionString(version); - } - catch - { - versionString = @"?"; - } - - kwlInformationText.Text = - $@"{castItem.AppName} {castItem.Version} is now available (you have {versionString}). Would you like to {downloadInstallText} it now?"; - } - else - { - kwlInformationText.Text = $@"Would you like to {downloadInstallText} it now?"; - } - - bool isUserMissingCriticalUpdate = items.Any(x => x.IsCriticalUpdate); - - kbtnRemindLater.Enabled = isUserMissingCriticalUpdate == false; - - kbtnSkipVersion.Enabled = isUserMissingCriticalUpdate == false; - - if (applicationIcon != null) - { - pbxApplicationIcon.Image = new Icon(applicationIcon, new Size(48, 48)).ToBitmap(); - - Icon = applicationIcon; - } - - _cancellationTokenSource = new(); - - _cancellationToken = _cancellationTokenSource.Token; - } - - #endregion - - #region IUpdateAvailable Implementation - - public event UserRespondedToUpdate? UserResponded; - public void Show(bool isOnMainThread) - { - Show(); - - if (!isOnMainThread) - { - Application.Run(this); - } - } - - public void HideReleaseNotes() => RemoveReleaseNotesControls(); - - public void HideRemindMeLaterButton() => kbtnRemindLater.Visible = false; - - public void HideSkipButton() => kbtnSkipVersion.Visible = false; - - void IUpdateAvailable.BringToFront() => BringToFront(); - - void IUpdateAvailable.Close() - { - _cancellationTokenSource.Cancel(); - - CloseForm(); - } - - public UpdateAvailableResult Result => UIFactory.ConvertDialogResultToUpdateAvailableResult(DialogResult); - - public AppCastItem? CurrentItem => _updates.Count > 0 ? _updates[0] : null; - - #endregion - - private void NetSparkleUpdateAvailableWindow_FormClosing(object sender, FormClosingEventArgs e) - { - if (!_didSendResponse) - { - // user closed form in some other way other than standard buttons - DialogResult = DialogResult.None; - _didSendResponse = true; - UserResponded?.Invoke(this, new UpdateResponseEventArgs(UpdateAvailableResult.None, CurrentItem)); - } - } - - private void kbtnSkipVersion_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.No; - - SendResponse(UpdateAvailableResult.SkipUpdate); - } - - private void kbtnRemindLater_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Retry; - - SendResponse(UpdateAvailableResult.RemindMeLater); - } - - private void kbtnInstallUpdate_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Yes; - - SendResponse(UpdateAvailableResult.InstallUpdate); - } - - #region Implementation - - /// - /// Setup the ReleaseNotesGrabber (if needed) and load the release notes - /// - public void Initialize() - { - if (ReleaseNotesGrabber == null) - { - ReleaseNotesGrabber = new ReleaseNotesGrabber(_releaseNotesHTMLTemplate, _additionalReleaseNotesHeaderHTML, _sparkle) - { - DateFormat = _releaseNotesDateFormat - }; - } - - kwbReleaseNotes.DocumentText = ReleaseNotesGrabber.GetLoadingText(); - - EnsureDialogShown(); - - LoadReleaseNotes(_updates); - } - - private async void LoadReleaseNotes(List items) - { - AppCastItem? latestVersion = items.OrderByDescending(p => p.Version).FirstOrDefault(); - - string releaseNotes = await ReleaseNotesGrabber?.DownloadAllReleaseNotes(items, latestVersion, _cancellationToken)!; - - kwbReleaseNotes.Invoke((MethodInvoker)delegate - { - // see https://stackoverflow.com/a/15209861/3938401 - kwbReleaseNotes.Navigate("about:blank"); - - kwbReleaseNotes.Document.OpenNew(true); - - kwbReleaseNotes.Document.Write(releaseNotes); - - kwbReleaseNotes.DocumentText = releaseNotes; - }); - } - - private void CloseForm() - { - if (InvokeRequired && !IsDisposed && !Disposing) - { - this.Invoke((MethodInvoker)delegate () - { - if (!IsDisposed && !Disposing) - { - Close(); - } - }); - } - else if (!IsDisposed && !Disposing) - { - Close(); - } - } - - /// - /// Removes the release notes control - /// - public void RemoveReleaseNotesControls() - { - if (kwlReleaseNotes.Parent == null) - { - return; - } - - // calc new size - Size newSize = new Size(Size.Width, Size.Height - kwlReleaseNotes.Height - kwbReleaseNotes.Height); - - // remove the no more needed controls - kwlReleaseNotes.Parent.Controls.Remove(kwlReleaseNotes); - kwbReleaseNotes.Parent.Controls.Remove(kwbReleaseNotes); - - // resize the window - /*this.MinimumSize = newSize; - this.Size = this.MinimumSize; - this.MaximumSize = this.MinimumSize;*/ - Size = newSize; - } - - void SendResponse(UpdateAvailableResult response) - { - _cancellationTokenSource?.Cancel(); - _didSendResponse = true; - UserResponded?.Invoke(this, new UpdateResponseEventArgs(response, CurrentItem)); - } - - /// - /// This was the only way Deadpikle could guarantee that the - /// update available window was shown above a main WPF MahApps window. - /// It's an ugly hack but...oh well. :\ - /// - public void EnsureDialogShown() - { - _ensureDialogShownTimer = new System.Windows.Forms.Timer(); - _ensureDialogShownTimer.Tick += EnsureDialogeShown_tick; - _ensureDialogShownTimer.Interval = 250; // in milliseconds - _ensureDialogShownTimer.Start(); - } - - private void EnsureDialogeShown_tick(object sender, EventArgs e) - { - // http://stackoverflow.com/a/4831839/3938401 for activating/bringing to front code - Activate(); - TopMost = true; // important - TopMost = false; // important - Focus(); // important - _ensureDialogShownTimer.Enabled = false; - _ensureDialogShownTimer = null; - } - - #endregion - } -} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.resx deleted file mode 100644 index d3c3376d8..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleUpdateAvailableWindow.resx +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - 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 - AAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAAjAAAAAiCAYAAABBcOPWAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAANtJREFUeF7t2rENg0AQRFGav6rowWVcGyAh2Rmx90sveMEQXThi5zg/+1pr/ciy - LMuyLE/Px/fjNFPfBQD8nwIDAOSMLTAAAG+eDcxEihUA8MYJCQDIUWAAgBwbGAAgxwYGAMhxQgIAchQY - ACDHBgYAyLGBAQBynJAAgBwFBgDIsYEBAHJsYACAHCckACBHgQEAcmxgAIAcGxgAIMcJCQDIUWAAgBwb - GAAgxwYGAMhxQgIAchQYACDHBgYAyLGBAQBynJAAgBwFBgDIsYEBAHL8gQEAchQYACBmXzfsJ4f0JV+Y - PAAAAABJRU5ErkJggg== - - - - - AAABAAIAEBAAAAAAIABoBAAAJgAAADAwAAAAACAAqCUAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE - AADXDQAA1w0AAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AABczlIAXM5i////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczg8BXs/tAV3P9ABc - zhf///8A////AP///wD///8A////AP///wD///8A////AABczmIAXM5rAFzOMwBczgUAXc+fDW3a9xBx - 3fkBXtCwAFzOAwBczjAAXM5nAFzOb////wD///8A////AP///wAAXM50A1/Q/Adi0PoBXs/6A1/Q+h+I - 8v8givP/BWHR+QFez/kGYdD7BGHR/ABczoz///8A////AP///wD///8AAFzOPAVh0fcji/b/I4fw/yCF - 7v8Xhfb/E4P2/yGF7/8ih/D/I4v2/whl1PMAXM5Q////AP///wD///8A////AABczgkAXM78K43y/xWG - 9v8Thfb/a7T6/2q0+v8Thfb/EoT1/y+S9f8BXc7+AFzOFv///wD///8A////AABczhUAXc+nB2LQ+jST - 8f8fjff/bbf7/83q///N6v//bbf7/xmK9v83lvT/CmTS+QFe0LMAXM4a////AABczmMCXs/zIHrf+EWf - 9v80mvj/crr7/83q///N6v//zer//83q//9xuvv/MZj4/0ah9v8lf+H6Al7P9gBczm8AXM5jAV3P8yJ7 - 3/hOpvf/QaL5/x+S+P8bkPj/zer//83q//8bkPj/HZH4/z2h+f9QqPf/JoDi+gJez/YAXM5v////AABc - zhUBXs+nCGPR+lKm9P85ofn/IZb4/83q///N6v//IZb4/zKe+f9Xq/X/C2XT+QJf0LMAXM4a////AP// - /wD///8AAFzOCQBdzvxisvb/Qaj6/0Cn+v+/5P7/v+T+/0Cn+v8+pvr/aLj5/wNez/4AXM4W////AP// - /wD///8A////AABczjwQaNP3dcH8/2y49v9ms/T/Xrf7/1e0+/9otPX/a7f2/3TB+/8cc9j0AFzOUP// - /wD///8A////AP///wAAXM50CmPR/BJp0/oCXs/6CmTR+nG9+f90wPr/EGjS+QFdz/kPZ9L7DWbS/ABc - zoz///8A////AP///wD///8AAFzOYgBczmsAXM4zAFzOBQJfz54xhd/4PI7j+QJf0LAAXM4DAFzOMABc - zmcAXM5v////AP///wD///8A////AP///wD///8A////AP///wAAXM4PAl/P7QRfz/QAXM4X////AP// - /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AABczlAAXM5g////AP// - /wD///8A////AP///wD///8A////AP5/AAD8PwAAwAMAAMADAADAAwAAwAMAAIABAAAAAAAAAAAAAIAB - AADAAwAAwAMAAMADAADAAwAA/D8AAP5/AAAoAAAAMAAAAGAAAAABACAAAAAAAAAkAAASCwAAEgsAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAEAAAACAAAAAwAAAAMAAAAEAAAABQAAAAYAAAAHAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACAAA - AAgAAAAHAAAABwAAAAcAAAAGAAAABQAAAAQAAAADAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACQAAAAoAAAALAAAADAAAAA0AAAANAAAADgAA - AA4AAAAOAAAADgAAAA0AAAANAAAADAAAAAsAAAAKAAAACQAAAAcAAAAGAAAABQAAAAQAAAADAAAAAgAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAAAwAAAAUAAAAHAAAACAAAAAoAAAAMAAAADQAAAA8AAAARAAAAEgAA - ABQAAAAVAEacRQBOr2IAAAAWAAAAFQAAABUAAAAUAAAAEgAAABEAAAAPAAAADQAAAAwAAAAKAAAACAAA - AAcAAAAFAAAAAwAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - 9v8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/9v8Xh/f/JIz1/yCM9/8ZiPf/EIT2/wiA9v8Hf/b/B3/2/xOF - 9v8ni/H/AFzO/AAiTBYAAAAKAAAABwAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAIAAAADAAAABQBczK4WeOL/IIv2/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR99f8EffX/BH31/wR9 - 9f8EffX/BH31/xmI9/8df+n/AF3O1gAAAAsAAAAIAAAABQAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAABABZyG8Ladj1KI/2/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ7 - 9f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/yGL9v8Uc9/8AFnHlwAAAAkAAAAGAAAABAAAAAIAAAABAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwBWwjUCXs/8LZD2/wd9 - 9f8BevX/AXn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/wB59f8AefX/AHn1/xSF9v8AefX/AHn1/wB5 - 9f8AefX/AHn1/wB59f8BefX/AXn1/wF69f8BevX/Anv1/yuQ9/8KZtX1AFfCXAAAAAYAAAAEAAAAAwAA - AAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgA1 - dwcAXM/4KIrw/xSE9v8De/X/A3v1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/RaT6/43P - /v9NqPn/A3z1/wJ79f8Ce/X/Anv1/wJ79f8Ce/X/A3v1/wN79f8De/X/C3/1/y+R9P8CXc7/AE6vIwAA - AAQAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAXc/IIH/o/yCL9/8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/BX32/wuA - 9v9gtPv/jtD+/47Q/v+O0P7/YLT7/wmA9v8Fffb/BX32/wV99v8Fffb/BX32/wV99v8Fffb/GYf3/ymJ - 7v8AXc/tAAAAAwAAAAIAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAXM2XGHTe+iyS9/8Hf/b/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/F4j3/3TA/P+O0P7/jtD+/47Q/v+O0P7/jtD+/2+9/P8Rhff/B3/2/wd/9v8Hf/b/B3/2/wd/ - 9v8Hf/b/I473/yJ/5v8AXc7EAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOFABdz6YHYdD8Lojo/iKO9/8Jgfb/CYH2/wmB - 9v8Jgfb/CYH2/wmB9v8plPj/g8n9/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v96xf3/HIz3/wmB - 9v8Jgfb/CYH2/wmB9v8Jgfb/GIn3/zWP7f8LZdL6AF3PwQBcziIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM5fAV7P8hx02/k7l/P/LJT3/w+E - 9v8Mg/b/DIP2/wyD9v8Mg/b/DIP2/0Ci+v+Lz/7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/hMr9/ymU+P8Mg/b/DIP2/wyD9v8Mg/b/DYP2/yeR9/89mfX/I3zf+wNf0PoAXM54AFzOBAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJQFe0MUMZdL5NI3r/zyc - +f8djfj/DoX3/w6F9/8Ohff/DoX3/w6F9/8Qhvf/WbH7/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/4rN/v85nvr/DoX3/w6F9/8Ohff/DoX3/w6F9/8Xivf/OJr4/zqT - 7/8TbNX4AV7Q2ABczjYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczgUAXc9+Al7P+yZ+ - 4PxEnvb/Lpb4/xKI9/8Qh/f/EIf3/xCH9/8Qh/f/EIf3/xiM+P9qvPz/is7+/4rO/v+Lz/7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/i8/+/4rO/v+Kzv7/Rqf6/xCH9/8Qh/f/EIf3/xCH - 9/8Qh/f/EIf3/yeT+P9Dn/f/LYXl/QZgz/0AXc+VAFzODQAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOOwFe - 0N0TbNb4Ppjw/z+f+f8dj/f/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ - 9/89ovr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/OZ/6/xKJ9/8Siff/Eon3/xKJ - 9/8Siff/Eon3/xKJ9/8Siff/Eon3/xKJ9/8ZjPf/OJz4/0Oc8/8cdNn5AV3P6wBczk4AAAAAAAAAAAAA - AAAAXM4QAFzOzQNez/44k+7/Taf5/y2X+P8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL - 9/8Vi/f/FYv3/xWL9/8/o/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/O6D6/xWL - 9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/FYv3/xWL9/8Vi/f/JJL4/0ml+f9AmfH/CmTS/QBd - z98AXM4iAAAAAAAAAAAAAAAAAFzOAwBcznIAXc/4Hnnf+kqk9/9Dovn/H5H4/xeN+P8Xjfj/F434/xeN - +P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P9ApPr/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/PaL6/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xeN+P8Xjfj/F434/xyP+P86nvn/Tqf4/yiD - 5PsBXs/7AF3PiABczgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4eAV7PuAZh0fk2j+v/Uqv6/zWd - +f8aj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P9Bpvr/jtD+/47Q/v+O0P7/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/PqP6/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/GY/4/xmP+P8Zj/j/Lpn5/06p - +v9AmO//DGbT+AFe0M4AXM4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABc - zlIBXs/rGXPa+E2k9P9Nqfr/KJf4/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/xyR+P9Dp/r/jtD+/47Q - /v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKX6/xyR+P8ckfj/HJH4/xyR+P8ckfj/HJH4/yOU - +P9Hpvn/Uqj2/yN83voBXc/1AFzOaQBczgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM4NAV3PlgNf0Pwyi+b9WK75/zGc+f8ek/j/HpP4/x6T+P8ek/j/HpP4/x6T - +P9Ep/r/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+O0P7/QKb6/x6T+P8ek/j/HpP4/x6T - +P8ek/j/J5f4/1iu+v89k+v/CGLQ+wFe0LAAXM4ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczjUBXtDcLoLg+0yq+v8glfn/IJX5/yCV - +f8glfn/IJX5/yCV+f8sm/r/i87+/47Q/v+O0P7/jtD+/47Q/v+O0P7/jtD+/47Q/v+Jzf7/KZn5/yCV - +f8glfn/IJX5/yCV+f8glfn/QKT6/z+R5/8BXs/tAFzOSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXc+hMYnl/U6s - +v8il/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/K5z5/z2l+/89pfv/PaX7/z2l+/89pfv/PaX7/z2l - +v8pm/n/Ipf5/yKX+f8il/n/Ipf5/yKX+f8il/n/Qqb6/0KX7P8CX9DPAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAACX9DhSZ7u/0Sn+v8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ - +f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/JZn5/yWZ+f8lmfn/OKL6/1qr9P8AXc77AFzOBgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczhIAXM7+YLH3/zij+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb - +f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/J5v5/yeb+f8nm/n/K535/2e4 - +v8LZNH7AFzONwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczksQadP4arv8/yyf+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd+v8pnfr/KZ36/ymd - +v8pnfr/KZ36/2C2+/8le9z3AFzOcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABczoUsg+D6Yrf7/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/yyf - +v8sn/r/LJ/6/yyf+v8sn/r/LJ/6/1Wy+/8+k+f/Al7QrwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJf0MlGm+v/VrP7/y6h - +v8uofr/LqH6/y6h+v8wovr/Paj6/0es+/80pPr/LqH6/y6h+v8uofr/LqH6/y6h+v8uofr/LqH6/y6h - +v8wovr/Rav7/z+p+v8xovr/LqH6/y6h+v8uofr/LqH6/0mt+/9ZqfH/Al7Q6gAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOBAFd - z/lhsfT/Sa77/zam+v9Grfv/VbT7/2W6+/9xv/r/arT0/1ul7P9vu/j/Q6z6/zCj+v8wo/r/MKP6/zCj - +v8wo/r/MKP6/zmn+v9vvfr/XKXs/2ay8/9xvvr/aLz7/1m1+/9Kr/v/O6j6/z2p+v9wvfn/A17P/wBc - zhsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAFzOMwZg0Px2wvz/csH8/3K9+P9irvH/SJfn/S1+2/YSaNH+A1/P8wFez+M1iOH6br/8/zWm - +/8ypfv/MqX7/zKl+/8ypfv/MqX7/2W7/P9JmOj9Al/P6wJez+4OZdH/J3ra9kWU5vxeqvD/crv4/3TC - /P93w/z/GXDW9wBczlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzObRBo0/w9jOL4H3LW+Qhh0P0DYNDaAV3PmgBczl8AXM4nAFzOAQBc - zhgCX8/1X63x/1q3/P81p/v/Naf7/zWn+/81p/v/TrL7/2249f8IYdD8AFzOMwAAAAAAXM4eAFzOVwBd - zpEDYNDTB2HP+xtv1fo4ieD3HnTX/QBdzo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOkwJf0LoAXM56AFzOQQBczgwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAXM5jFmzU+HfC+v9Er/v/N6n7/zep+/88q/v/dML8/yl82/gBXc+NAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAFzOBwBczjoAXM5yAl/QsgBdzrEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl/QxkOV5vxvwvz/Oqv7/zmr+/9jvfz/WKTs/gJf - z+QAXM4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzOJAVg0PltuPX/Wbn8/020 - /P92wPj/DmbR+wBczkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFd - zngjeNn4e8f8/3fH/f84iOD4Al7PowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAABczgQCX9DXUqHr/WSv8f8EX8/vAFzOEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXM4zCmTR+xZr1PkAXM5XAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV7PjwJfz7kAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAD/AAD/wAAAAD8AAP+A - AAAAHwAA/wAAAAAPAAD+AAAAAAcAAPwAAAAAAwAA/AAAAAADAAD8AAAAAAMAAPgAAAAAAQAA+AAAAAAB - AAD4AAAAAAEAAPgAAAAAAQAA/AAAAAADAAD8AAAAAAMAAPwAAAAAAwAA/gAAAAAHAAD/AAAAAA8AAP+A - AAAAHwAA/8AAAAA/AAD/gAAAAH8AAP8AAAAAHwAA/AAAAAAPAADwAAAAAAMAAOAAAAAAAQAAwAAAAAAA - AADgAAAAAAEAAPgAAAAABwAA/gAAAAAPAAD/AAAAAD8AAP/AAAAA/wAA/+AAAAH/AAD/4AAAAP8AAP/A - AAAA/wAA/8AAAAD/AAD/wAAAAP8AAP/AAAAA/wAA/4AAAAB/AAD/gAAAAH8AAP+AAAEAfwAA/4PwA/B/ - AAD///gD//8AAP//+Af//wAA///8D///AAD///wP//8AAP///h///wAA////P///AAD///////8AAP// - /////wAA - - - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/Hasher.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/Hasher.cs index 5154356e2..6b3c8359d 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/Hasher.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/Hasher.cs @@ -1,65 +1,48 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { - internal class Hasher + /// + /// Class used to generate hash sums of files + /// + internal static class Hasher { - #region Methods - internal static string HashFile(string filePath, HashType hashType) + /// + /// Generate a hash sum of a file + /// + /// The file to hash + /// The Type of hash + /// The computed hash + internal static string HashFile(string filePath, HashType algo) { - switch (hashType) + switch (algo) { - case HashType.Md5: + case HashType.MD5: return MakeHashString(MD5.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); - case HashType.Sha1: + case HashType.SHA1: return MakeHashString(SHA1.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); - case HashType.Sha256: + case HashType.SHA256: return MakeHashString(SHA256.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); - case HashType.Sha384: + case HashType.SHA384: return MakeHashString(SHA384.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); - case HashType.Sha512: + case HashType.SHA512: return MakeHashString(SHA512.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); default: - return string.Empty; + return ""; } } + /// + /// Converts byte[] to string + /// + /// The hash to convert + /// Hash as string private static string MakeHashString(byte[] hash) { - StringBuilder builder = new StringBuilder(); + StringBuilder s = new StringBuilder(); foreach (byte b in hash) - { - builder.Append(b.ToString("x2").ToLower()); - } + s.Append(b.ToString("x2").ToLower()); - return builder.ToString(); + return s.ToString(); } - #endregion } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateFileInfo.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateFileInfo.cs deleted file mode 100644 index 814eafe6a..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateFileInfo.cs +++ /dev/null @@ -1,89 +0,0 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate -{ - internal class SharpUpdateFileInfo - { - /// - /// Holds the url for download - /// - private string url; - - /// - /// Holds th filename - /// - private string fileName; - - /// - /// Holds the md5 checksum - /// - private string md5; - - /// - /// Holds the path to the temporarly downloaded file - /// - private string tempFile; - - /// - /// Creates a new SharpUpdateFileInfo object - /// - internal SharpUpdateFileInfo(string url, string fileName, string md5) - { - this.url = url; - this.fileName = fileName; - this.md5 = md5; - } - - /// - /// The download url for the file - /// - internal string Url => url; - - //set { url = value; } - /// - /// The filename - /// - internal string FileName => fileName; - - //set { fileName = value; } - /// - /// The Md5-Checksum of the file - /// - internal string Md5 => md5; - - //set { md5 = value; } - /// - /// Path to the downloaded file - /// - internal string TempFile - { - get => tempFile; - set => tempFile = value; - } - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateLocalAppInfo.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateLocalAppInfo.cs index a54815b61..ba1f1ce64 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateLocalAppInfo.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateLocalAppInfo.cs @@ -1,37 +1,12 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// The class that holds all application's information /// public class SharpUpdateLocalAppInfo { + #region Public + /// /// The path of your application /// @@ -50,45 +25,47 @@ public class SharpUpdateLocalAppInfo /// /// The application's icon to be displayed in the top left /// - public Icon ApplicationIcon { get; } + public Icon? ApplicationIcon { get; } /// /// The context of the program. /// For Windows Forms Applications, use 'this' /// Console Apps, reference System.Windows.Forms and return null. /// - public Form Context { get; } + public Form? Context { get; } /// /// The version of your application /// public Version Version { get; } + #endregion + /// /// Tag to distinguish types of updates /// - public JobType Tag; + public JobType _tag; - public SharpUpdateLocalAppInfo(SharpUpdateXml job, Assembly ass, Form f) + public SharpUpdateLocalAppInfo(SharpUpdateXml job, Assembly ass, Form? f) { ApplicationPath = job.FilePath; ApplicationName = Path.GetFileNameWithoutExtension(ApplicationPath); ApplicationAssembly = ass; ApplicationIcon = f.Icon; Context = f; - Version = (job.Tag == JobType.Update) ? ApplicationAssembly.GetName().Version : job.Version; - Tag = job.Tag; + Version = (job.Tag == JobType.UPDATE) ? ApplicationAssembly.GetName().Version : job.Version; + _tag = job.Tag; } public SharpUpdateLocalAppInfo(SharpUpdateXml job) { ApplicationPath = job.FilePath; ApplicationName = Path.GetFileNameWithoutExtension(ApplicationPath); - ApplicationAssembly = (job.Tag == JobType.Update) ? Assembly.Load(ApplicationName) : null; + ApplicationAssembly = (job.Tag == JobType.UPDATE) ? Assembly.Load(ApplicationName) : null; ApplicationIcon = null; Context = null; - Version = (job.Tag == JobType.Update) ? ApplicationAssembly.GetName().Version : job.Version; - Tag = job.Tag; + Version = (job.Tag == JobType.UPDATE) ? ApplicationAssembly.GetName().Version : job.Version; + _tag = job.Tag; } public void Print() @@ -96,7 +73,7 @@ public void Print() string head = "========== SharpUpdateLocalAppInfo =========="; string tail = "============================================="; string toPrint = string.Format("{0}\nJob type: {1}\nApplicationPath: {2}\nApplicationName: {3}\nAssemblyName: {4}\nFormName: {5}\nVersion: {6}\n{7}", - head, Tag.ToString(), ApplicationPath == null ? "null" : ApplicationPath, + head, _tag.ToString(), ApplicationPath == null ? "null" : ApplicationPath, ApplicationName == null ? "null" : ApplicationName, ApplicationAssembly == null ? "null" : ApplicationAssembly.FullName, Context == null ? "null" : Context.Name, diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateXml.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateXml.cs index 9969c33d3..52ab9d240 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateXml.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdateXml.cs @@ -1,31 +1,4 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// Contains update information @@ -87,10 +60,7 @@ public SharpUpdateXml(Version version, Uri uri, string filePath, string md5, str /// /// Application's current version /// If the update's version # is newer - public bool IsNewerThan(Version version) - { - return Version > version; - } + public bool IsNewerThan(Version version) => Version > version; /// /// Checks the Uri to make sure file exist @@ -101,7 +71,7 @@ public static bool ExistsOnServer(Uri location) { if (location.ToString().StartsWith("file")) { - return System.IO.File.Exists(location.LocalPath); + return File.Exists(location.LocalPath); } else { @@ -124,10 +94,10 @@ public static bool ExistsOnServer(Uri location) /// /// Uri of update.xml on server /// The SharpUpdateXml object with the data, or null of any errors - public static SharpUpdateXml[] Parse(Uri location) + public static SharpUpdateXml[]? Parse(Uri location) { List result = new List(); - Version version = null; + Version version; string url = "", filePath = "", md5 = "", description = "", launchArgs = ""; try @@ -140,14 +110,12 @@ public static SharpUpdateXml[] Parse(Uri location) // Gets the appId's node with the update info // This allows you to store all program's update nodes in one file // XmlNode updateNode = doc.DocumentElement.SelectSingleNode("//update[@appID='" + appID + "']"); - XmlNodeList updateNodes = doc.DocumentElement.SelectNodes("/sharpUpdate/update"); + XmlNodeList? updateNodes = doc.DocumentElement.SelectNodes("/sharpUpdate/update"); foreach (XmlNode updateNode in updateNodes) { // If the node doesn't exist, there is no update if (updateNode == null) - { return null; - } // Parse data version = Version.Parse(updateNode["version"].InnerText); @@ -157,17 +125,16 @@ public static SharpUpdateXml[] Parse(Uri location) description = updateNode["description"].InnerText; launchArgs = updateNode["launchArgs"].InnerText; - result.Add(new SharpUpdateXml(version, new Uri(url), filePath, md5, description, launchArgs, JobType.Update)); + result.Add(new SharpUpdateXml(version, new Uri(url), filePath, md5, description, launchArgs, + JobType.UPDATE)); } - XmlNodeList addNodes = doc.DocumentElement.SelectNodes("/sharpUpdate/add"); + XmlNodeList? addNodes = doc.DocumentElement.SelectNodes("/sharpUpdate/add"); foreach (XmlNode addNode in addNodes) { // If the node doesn't exist, there is no add if (addNode == null) - { return null; - } // Parse data version = Version.Parse(addNode["version"].InnerText); @@ -177,29 +144,31 @@ public static SharpUpdateXml[] Parse(Uri location) description = addNode["description"].InnerText; launchArgs = addNode["launchArgs"].InnerText; - result.Add(new SharpUpdateXml(version, new Uri(url), filePath, md5, description, launchArgs, JobType.Add)); + result.Add(new SharpUpdateXml(version, new Uri(url), filePath, md5, description, launchArgs, + JobType.ADD)); } - XmlNodeList removeNodes = doc.DocumentElement.SelectNodes("/sharpUpdate/remove"); + XmlNodeList? removeNodes = doc.DocumentElement.SelectNodes("/sharpUpdate/remove"); foreach (XmlNode removeNode in removeNodes) { // If the node doesn't exist, there is no remove if (removeNode == null) - { return null; - } // Parse data filePath = removeNode["filePath"].InnerText; description = removeNode["description"].InnerText; launchArgs = removeNode["launchArgs"].InnerText; - result.Add(new SharpUpdateXml(null, null, filePath, null, description, launchArgs, JobType.Remove)); + result.Add(new SharpUpdateXml(null, null, filePath, null, description, launchArgs, JobType.REMOVE)); } return result.ToArray(); } - catch { return null; } + catch + { + return null; + } } } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdater.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdater.cs index eb75fc683..0357e2a16 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdater.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Classes/SharpUpdater.cs @@ -1,33 +1,6 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -using Application = System.Windows.Forms.Application; - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate +using Application = System.Windows.Forms.Application; + +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// Provides application update support in C# @@ -37,74 +10,74 @@ public class SharpUpdater /// /// Parent form /// - private Form ParentForm; + private KryptonForm _parentForm; /// /// Parent assembly /// - private Assembly ParentAssembly; + private Assembly _parentAssembly; /// /// Parent name /// - private string ParentPath; + private string _parentPath; /// /// Holds the program-to-update's info /// - private SharpUpdateLocalAppInfo[] LocalApplicationInfos; + private SharpUpdateLocalAppInfo[] _localApplicationInfos; /// /// Holds all the jobs defined in update xml /// - private SharpUpdateXml[] JobsFromXML; + private SharpUpdateXml[] _jobsFromXml; /// /// Total number of jobs /// - private int Num_Jobs = 0; + private int _numJobs = 0; /// /// Lists containing all informtion for files update /// - private List tempFilePaths = new List(); - private List currentPaths = new List(); - private List newPaths = new List(); - private List launchArgss = new List(); - private List jobtypes = new List(); + private List _tempFilePaths = new List(); + private List _currentPaths = new List(); + private List _newPaths = new List(); + private List _launchArgss = new List(); + private List _jobtypes = new List(); - private int acceptJobs = 0; + private int _acceptJobs = 0; /// /// Thread to find update /// - private BackgroundWorker BgWorker; + private BackgroundWorker _bgWorker; /// /// Uri of the update xml on the server /// - private Uri UpdateXmlLocation; + private Uri _updateXmlLocation; //private readonly Uri UpdateXmlLocation = new Uri("https://raw.githubusercontent.com/henryxrl/SharpUpdate/master/project.xml"); //private readonly Uri UpdateXmlLocation = new Uri(new FileInfo(@"..\..\..\project.xml").FullName); // for local testing /// /// Creates a new SharpUpdater object /// - /// Parent ssembly to be attached + /// Parent assembly to be attached /// Parent form to be attached - /// Uri of the update xml on the server - public SharpUpdater(Assembly a, Form owner, Uri XMLOnServer) + /// Uri of the update xml on the server + public SharpUpdater(Assembly a, KryptonForm owner, Uri xmlOnServer) { - ParentForm = owner; - ParentAssembly = a; - ParentPath = a.Location; + _parentForm = owner; + _parentAssembly = a; + _parentPath = a.Location; - UpdateXmlLocation = XMLOnServer; + _updateXmlLocation = xmlOnServer; // Set up backgroundworker - BgWorker = new BackgroundWorker(); - BgWorker.DoWork += new DoWorkEventHandler(BgWorker_DoWork); - BgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BgWorker_RunWorkerCompleted); + _bgWorker = new BackgroundWorker(); + _bgWorker.DoWork += new DoWorkEventHandler(BgWorker_DoWork); + _bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(BgWorker_RunWorkerCompleted); } /// @@ -113,10 +86,8 @@ public SharpUpdater(Assembly a, Form owner, Uri XMLOnServer) /// public void DoUpdate() { - if (!BgWorker.IsBusy) - { - BgWorker.RunWorkerAsync(); - } + if (!_bgWorker.IsBusy) + _bgWorker.RunWorkerAsync(); } /// @@ -125,14 +96,10 @@ public void DoUpdate() private void BgWorker_DoWork(object sender, DoWorkEventArgs e) { // Check for update on server - if (!SharpUpdateXml.ExistsOnServer(UpdateXmlLocation)) - { + if (!SharpUpdateXml.ExistsOnServer(_updateXmlLocation)) e.Cancel = true; - } else // Parse update xml - { - e.Result = SharpUpdateXml.Parse(UpdateXmlLocation); - } + e.Result = SharpUpdateXml.Parse(_updateXmlLocation); } /// @@ -143,39 +110,37 @@ private void BgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventA // If there is a file on the server if (!e.Cancelled) { - JobsFromXML = (SharpUpdateXml[])e.Result; + _jobsFromXml = (SharpUpdateXml[])e.Result; // Check if the update is not null and is a newer version than the current application - if (JobsFromXML != null) + if (_jobsFromXml != null) { - Console.WriteLine($"Number of updates from XML: {JobsFromXML.Length}"); + Console.WriteLine("Number of updates from XML: " + _jobsFromXml.Length); // create local app info according to update xml - Num_Jobs = JobsFromXML.Length; - LocalApplicationInfos = new SharpUpdateLocalAppInfo[Num_Jobs]; - for (int i = 0; i < Num_Jobs; ++i) + _numJobs = _jobsFromXml.Length; + _localApplicationInfos = new SharpUpdateLocalAppInfo[_numJobs]; + for (int i = 0; i < _numJobs; ++i) { - if (Path.GetFileName(ParentPath).CompareTo(Path.GetFileName(JobsFromXML[i].FilePath)) == 0) + if (Path.GetFileName(_parentPath).CompareTo(Path.GetFileName(_jobsFromXml[i].FilePath)) == 0) { - LocalApplicationInfos[i] = new SharpUpdateLocalAppInfo(JobsFromXML[i], ParentAssembly, ParentForm); + _localApplicationInfos[i] = new SharpUpdateLocalAppInfo(_jobsFromXml[i], _parentAssembly, _parentForm); } else { - LocalApplicationInfos[i] = new SharpUpdateLocalAppInfo(JobsFromXML[i]); + _localApplicationInfos[i] = new SharpUpdateLocalAppInfo(_jobsFromXml[i]); } - LocalApplicationInfos[i].Print(); + _localApplicationInfos[i].Print(); } // validate all update jobs List validJobs = new List(); - for (int i = 0; i < Num_Jobs; ++i) + for (int i = 0; i < _numJobs; ++i) { - if (JobsFromXML[i].Tag == JobType.Update) + if (_jobsFromXml[i].Tag == JobType.UPDATE) { - if (!JobsFromXML[i].IsNewerThan(LocalApplicationInfos[i].Version)) - { + if (!_jobsFromXml[i].IsNewerThan(_localApplicationInfos[i].Version)) continue; - } } validJobs.Add(i); } @@ -189,34 +154,28 @@ private void BgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventA showMsgBox = false; // Ask to accept the update - if (new SharpUpdateAcceptForm(LocalApplicationInfos[i], JobsFromXML[i], count, validJobs.Count).ShowDialog(LocalApplicationInfos[0].Context) == DialogResult.Yes) + if (new SharpUpdateAcceptForm(_localApplicationInfos[i], _jobsFromXml[i], count, validJobs.Count).ShowDialog(_localApplicationInfos[0].Context) == DialogResult.Yes) { - acceptJobs++; - DownloadUpdate(JobsFromXML[i], LocalApplicationInfos[i]); // Do the update + _acceptJobs++; + DownloadUpdate(_jobsFromXml[i], _localApplicationInfos[i]); // Do the update } } if (showMsgBox) { - KryptonMessageBox.Show(ParentForm, "You have the latest versions already!"); + KryptonMessageBox.Show(_parentForm, "You have the latest versions already!"); } else { - if (acceptJobs > 0) - { + if (_acceptJobs > 0) InstallUpdate(); - } } } else - { - KryptonMessageBox.Show(ParentForm, "You have the latest versions already!"); - } + KryptonMessageBox.Show(_parentForm, "You have the latest versions already!"); } else - { - KryptonMessageBox.Show(ParentForm, "No update information found!"); - } + KryptonMessageBox.Show(_parentForm, "No update information found!"); } /// @@ -226,13 +185,13 @@ private void BgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventA /// An SharpUpdateInfo object containing application's info private void DownloadUpdate(SharpUpdateXml update, SharpUpdateLocalAppInfo applicationInfo) { - if (update.Tag == JobType.Remove) + if (update.Tag == JobType.REMOVE) { - tempFilePaths.Add(""); - currentPaths.Add(""); - newPaths.Add(Path.GetFullPath(applicationInfo.ApplicationPath)); - launchArgss.Add(update.LaunchArgs); - jobtypes.Add(update.Tag); + _tempFilePaths.Add(""); + _currentPaths.Add(""); + _newPaths.Add(Path.GetFullPath(applicationInfo.ApplicationPath)); + _launchArgss.Add(update.LaunchArgs); + _jobtypes.Add(update.Tag); return; } @@ -241,23 +200,23 @@ private void DownloadUpdate(SharpUpdateXml update, SharpUpdateLocalAppInfo appli if (result == DialogResult.OK) { - string currentPath = (update.Tag == JobType.Update) ? applicationInfo.ApplicationAssembly.Location : ""; - string newPath = (update.Tag == JobType.Update) ? Path.GetFullPath(Path.GetDirectoryName(currentPath).ToString() + update.FilePath) : Path.GetFullPath(applicationInfo.ApplicationPath); + string currentPath = (update.Tag == JobType.UPDATE) ? applicationInfo.ApplicationAssembly.Location : ""; + string newPath = (update.Tag == JobType.UPDATE) ? Path.GetFullPath(Path.GetDirectoryName(currentPath).ToString() + update.FilePath) : Path.GetFullPath(applicationInfo.ApplicationPath); Directory.CreateDirectory(Path.GetDirectoryName(newPath)); - tempFilePaths.Add(form.TempFilePath); - currentPaths.Add(currentPath); - newPaths.Add(newPath); - launchArgss.Add(update.LaunchArgs); - jobtypes.Add(update.Tag); + _tempFilePaths.Add(form.TempFilePath); + _currentPaths.Add(currentPath); + _newPaths.Add(newPath); + _launchArgss.Add(update.LaunchArgs); + _jobtypes.Add(update.Tag); } else if (result == DialogResult.Abort) { - KryptonMessageBox.Show(ParentForm, "The update download was canceled.\nThis program has not been modified.", "Update Download Canceled", KryptonMessageBoxButtons.OK, KryptonMessageBoxIcon.Information); + KryptonMessageBox.Show(_parentForm, "The update download was cancelled.\nThis program has not been modified.", "Update Download Cancelled", KryptonMessageBoxButtons.OK, KryptonMessageBoxIcon.Information); } else { - KryptonMessageBox.Show(ParentForm, "There was a problem downloading the update.\nPlease try again later.", "Update Download Error", KryptonMessageBoxButtons.OK, KryptonMessageBoxIcon.Information); + KryptonMessageBox.Show(_parentForm, "There was a problem downloading the update.\nPlease try again later.", "Update Download Error", KryptonMessageBoxButtons.OK, KryptonMessageBoxIcon.Information); } } @@ -266,14 +225,10 @@ private void DownloadUpdate(SharpUpdateXml update, SharpUpdateLocalAppInfo appli /// private void InstallUpdate() { - DialogResult result = KryptonMessageBox.Show("The application needs to restart.", "Restart Needed", KryptonMessageBoxButtons.OK, KryptonMessageBoxIcon.Information); - - if (result == DialogResult.OK) - { - UpdateApplications(); - - Application.Exit(); - } + // ToDo: Uncomment once timeouts are supported + //MessageBoxEx.Show(_parentForm, "Application restarts in 5 seconds", "Success", 5000); + UpdateApplications(); + Application.Exit(); } /// @@ -281,42 +236,42 @@ private void InstallUpdate() /// private void UpdateApplications() { - string argument_start = "/C choice /C Y /N /D Y /T 4 & Start \"\" /D \"{0}\" \"{1}\""; - string argument_update = "/C choice /C Y /N /D Y /T 4 & Del /F /Q \"{0}\" & choice /C Y /N /D Y /T 2 & Move /Y \"{1}\" \"{2}\""; - string argument_update_start = $"{argument_update} & Start \"\" /D \"{{3}}\" \"{{4}}\" {{5}}"; - string argument_add = "/C choice /C Y /N /D Y /T 4 & Move /Y \"{0}\" \"{1}\""; - string argument_remove = "/C choice /C Y /N /D Y /T 4 & Del /F /Q \"{0}\""; - string argument_complete = ""; + string argumentStart = "/C choice /C Y /N /D Y /T 4 & Start \"\" /D \"{0}\" \"{1}\""; + string argumentUpdate = "/C choice /C Y /N /D Y /T 4 & Del /F /Q \"{0}\" & choice /C Y /N /D Y /T 2 & Move /Y \"{1}\" \"{2}\""; + string argumentUpdateStart = argumentUpdate + " & Start \"\" /D \"{3}\" \"{4}\" {5}"; + string argumentAdd = "/C choice /C Y /N /D Y /T 4 & Move /Y \"{0}\" \"{1}\""; + string argumentRemove = "/C choice /C Y /N /D Y /T 4 & Del /F /Q \"{0}\""; + string argumentComplete = ""; int curAppidx = -1; - for (int i = 0; i < acceptJobs; ++i) + for (int i = 0; i < _acceptJobs; ++i) { - string curName = Path.GetFileName(currentPaths[i]); - if (curName.CompareTo("") != 0 && Path.GetFileName(ParentPath).CompareTo(curName) == 0) + string curName = Path.GetFileName(_currentPaths[i]); + if (curName.CompareTo("") != 0 && Path.GetFileName(_parentPath).CompareTo(curName) == 0) { curAppidx = i; continue; } - if (jobtypes[i] == JobType.Add) + if (_jobtypes[i] == JobType.ADD) { - argument_complete = string.Format(argument_add, tempFilePaths[i], newPaths[i]); - Console.WriteLine($"add: {argument_complete}"); + argumentComplete = string.Format(argumentAdd, _tempFilePaths[i], _newPaths[i]); + Console.WriteLine("add: " + argumentComplete); } - else if (jobtypes[i] == JobType.Update) + else if (_jobtypes[i] == JobType.UPDATE) { - argument_complete = string.Format(argument_update, currentPaths[i], tempFilePaths[i], newPaths[i]); - Console.WriteLine($"update: {argument_complete}"); + argumentComplete = string.Format(argumentUpdate, _currentPaths[i], _tempFilePaths[i], _newPaths[i]); + Console.WriteLine("update: " + argumentComplete); } else { - argument_complete = string.Format(argument_remove, newPaths[i]); - Console.WriteLine($"remove: {argument_complete}"); + argumentComplete = string.Format(argumentRemove, _newPaths[i]); + Console.WriteLine("remove: " + argumentComplete); } ProcessStartInfo cmd = new ProcessStartInfo { - Arguments = argument_complete, + Arguments = argumentComplete, WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, FileName = "cmd.exe" @@ -326,23 +281,23 @@ private void UpdateApplications() if (curAppidx > -1) { - argument_complete = string.Format(argument_update_start, currentPaths[curAppidx], tempFilePaths[curAppidx], newPaths[curAppidx], Path.GetDirectoryName(newPaths[curAppidx]), Path.GetFileName(newPaths[curAppidx]), launchArgss[curAppidx]); - Console.WriteLine($"Update and run main app: {argument_complete}"); + argumentComplete = string.Format(argumentUpdateStart, _currentPaths[curAppidx], _tempFilePaths[curAppidx], _newPaths[curAppidx], Path.GetDirectoryName(_newPaths[curAppidx]), Path.GetFileName(_newPaths[curAppidx]), _launchArgss[curAppidx]); + Console.WriteLine("Update and run main app: " + argumentComplete); } else { - argument_complete = string.Format(argument_start, Path.GetDirectoryName(ParentPath), Path.GetFileName(ParentPath)); - Console.WriteLine($"Run main app: {argument_complete}"); + argumentComplete = string.Format(argumentStart, Path.GetDirectoryName(_parentPath), Path.GetFileName(_parentPath)); + Console.WriteLine("Run main app: " + argumentComplete); } - ProcessStartInfo cmd_main = new ProcessStartInfo + ProcessStartInfo cmdMain = new ProcessStartInfo { - Arguments = argument_complete, + Arguments = argumentComplete, WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, FileName = "cmd.exe" }; - Process.Start(cmd_main); + Process.Start(cmdMain); } } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.Designer.cs new file mode 100644 index 000000000..45d6955df --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.Designer.cs @@ -0,0 +1,178 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + partial class SharpUpdateAcceptForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); + this.kryptonBorderEdge1 = new Krypton.Toolkit.KryptonBorderEdge(); + this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); + this.kbtnDetails = new Krypton.Toolkit.KryptonButton(); + this.kbtnNo = new Krypton.Toolkit.KryptonButton(); + this.kbtnYes = new Krypton.Toolkit.KryptonButton(); + this.kwlUpdateAvailable = new Krypton.Toolkit.KryptonWrapLabel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.kwlNewVersion = new Krypton.Toolkit.KryptonWrapLabel(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); + this.kryptonPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); + this.kryptonPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // kryptonPanel1 + // + this.kryptonPanel1.Controls.Add(this.kbtnYes); + this.kryptonPanel1.Controls.Add(this.kbtnNo); + this.kryptonPanel1.Controls.Add(this.kbtnDetails); + this.kryptonPanel1.Controls.Add(this.kryptonBorderEdge1); + this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.kryptonPanel1.Location = new System.Drawing.Point(0, 203); + this.kryptonPanel1.Name = "kryptonPanel1"; + this.kryptonPanel1.PanelBackStyle = Krypton.Toolkit.PaletteBackStyle.PanelAlternate; + this.kryptonPanel1.Size = new System.Drawing.Size(382, 50); + this.kryptonPanel1.TabIndex = 0; + // + // kryptonBorderEdge1 + // + this.kryptonBorderEdge1.BorderStyle = Krypton.Toolkit.PaletteBorderStyle.HeaderPrimary; + this.kryptonBorderEdge1.Dock = System.Windows.Forms.DockStyle.Top; + this.kryptonBorderEdge1.Location = new System.Drawing.Point(0, 0); + this.kryptonBorderEdge1.Name = "kryptonBorderEdge1"; + this.kryptonBorderEdge1.Size = new System.Drawing.Size(382, 1); + this.kryptonBorderEdge1.Text = "kryptonBorderEdge1"; + // + // kryptonPanel2 + // + this.kryptonPanel2.Controls.Add(this.kwlNewVersion); + this.kryptonPanel2.Controls.Add(this.pictureBox1); + this.kryptonPanel2.Controls.Add(this.kwlUpdateAvailable); + this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.kryptonPanel2.Location = new System.Drawing.Point(0, 0); + this.kryptonPanel2.Name = "kryptonPanel2"; + this.kryptonPanel2.Size = new System.Drawing.Size(382, 203); + this.kryptonPanel2.TabIndex = 1; + // + // kbtnDetails + // + this.kbtnDetails.Location = new System.Drawing.Point(280, 13); + this.kbtnDetails.Name = "kbtnDetails"; + this.kbtnDetails.Size = new System.Drawing.Size(90, 25); + this.kbtnDetails.TabIndex = 1; + this.kbtnDetails.Values.Text = "kryptonButton1"; + this.kbtnDetails.Click += new System.EventHandler(this.kbtnDetails_Click); + // + // kbtnNo + // + this.kbtnNo.Location = new System.Drawing.Point(184, 13); + this.kbtnNo.Name = "kbtnNo"; + this.kbtnNo.Size = new System.Drawing.Size(90, 25); + this.kbtnNo.TabIndex = 2; + this.kbtnNo.Values.Text = "kryptonButton2"; + this.kbtnNo.Click += new System.EventHandler(this.kbtnNo_Click); + // + // kbtnYes + // + this.kbtnYes.Location = new System.Drawing.Point(88, 13); + this.kbtnYes.Name = "kbtnYes"; + this.kbtnYes.Size = new System.Drawing.Size(90, 25); + this.kbtnYes.TabIndex = 3; + this.kbtnYes.Values.Text = "kryptonButton3"; + this.kbtnYes.Click += new System.EventHandler(this.kbtnYes_Click); + // + // kwlUpdateAvailable + // + this.kwlUpdateAvailable.AutoSize = false; + this.kwlUpdateAvailable.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kwlUpdateAvailable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); + this.kwlUpdateAvailable.LabelStyle = Krypton.Toolkit.LabelStyle.AlternateControl; + this.kwlUpdateAvailable.Location = new System.Drawing.Point(88, 13); + this.kwlUpdateAvailable.Name = "kwlUpdateAvailable"; + this.kwlUpdateAvailable.Size = new System.Drawing.Size(282, 64); + this.kwlUpdateAvailable.StateCommon.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kwlUpdateAvailable.Text = "An update is available!\r\nWould you like to update?"; + this.kwlUpdateAvailable.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pictureBox1 + // + this.pictureBox1.BackColor = System.Drawing.Color.Transparent; + this.pictureBox1.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.update2; + this.pictureBox1.Location = new System.Drawing.Point(13, 13); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(64, 64); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox1.TabIndex = 1; + this.pictureBox1.TabStop = false; + // + // kwlNewVersion + // + this.kwlNewVersion.AutoSize = false; + this.kwlNewVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kwlNewVersion.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); + this.kwlNewVersion.LabelStyle = Krypton.Toolkit.LabelStyle.AlternateControl; + this.kwlNewVersion.Location = new System.Drawing.Point(88, 81); + this.kwlNewVersion.Name = "kwlNewVersion"; + this.kwlNewVersion.Size = new System.Drawing.Size(282, 107); + this.kwlNewVersion.StateCommon.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kwlNewVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // SharpUpdateAcceptForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(382, 253); + this.Controls.Add(this.kryptonPanel2); + this.Controls.Add(this.kryptonPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SharpUpdateAcceptForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); + this.kryptonPanel1.ResumeLayout(false); + this.kryptonPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); + this.kryptonPanel2.ResumeLayout(false); + this.kryptonPanel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private KryptonPanel kryptonPanel1; + private KryptonBorderEdge kryptonBorderEdge1; + private KryptonPanel kryptonPanel2; + private KryptonButton kbtnDetails; + private KryptonButton kbtnNo; + private KryptonButton kbtnYes; + private KryptonWrapLabel kwlUpdateAvailable; + private PictureBox pictureBox1; + private KryptonWrapLabel kwlNewVersion; + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.cs new file mode 100644 index 000000000..f87130afa --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.cs @@ -0,0 +1,75 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + public partial class SharpUpdateAcceptForm : KryptonForm + { + #region Instance Fields + + /// + /// The program to update's info + /// + private SharpUpdateLocalAppInfo _applicationInfo; + + /// + /// The update info from the update.xml + /// + private SharpUpdateXml _updateInfo; + + /// + /// The update info display form + /// + private SharpUpdateInfoForm _updateInfoForm; + + #endregion + + public SharpUpdateAcceptForm(SharpUpdateLocalAppInfo applicationInfo, SharpUpdateXml updateInfo, int numCurUpdate, int numTotalUpdate) + { + InitializeComponent(); + + _applicationInfo = applicationInfo; + + _updateInfo = updateInfo; + + Text = $@"{_applicationInfo.ApplicationName} - ({numCurUpdate}/{numTotalUpdate}) Available Update"; + + // Assigns the icon if it isn't null + if (_applicationInfo.ApplicationIcon != null) + { + Icon = _applicationInfo.ApplicationIcon; + } + + // Adds the update version # to the form + kwlNewVersion.Text = updateInfo.Tag != JobType.REMOVE ? + string.Format(updateInfo.Tag == JobType.UPDATE ? "Update: {0}\nNew Version: {1}" : "New: {0}\nVersion: {1}", Path.GetFileName(_applicationInfo.ApplicationPath), _updateInfo.Version.ToString()) : + $"Remove: {Path.GetFileName(_applicationInfo.ApplicationPath)}"; + + kbtnNo.Text = KryptonLanguageManager.GeneralToolkitStrings.No; + + kbtnYes.Text = KryptonLanguageManager.GeneralToolkitStrings.Yes; + } + + private void kbtnYes_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Yes; + + Close(); + } + + private void kbtnNo_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.No; + + Close(); + } + + private void kbtnDetails_Click(object sender, EventArgs e) + { + if (_updateInfoForm == null) + { + _updateInfoForm = new SharpUpdateInfoForm(_applicationInfo, _updateInfo); + } + + // Shows the details form + _updateInfoForm.ShowDialog(this); + } + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateDownloadForm.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.resx similarity index 100% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateDownloadForm.resx rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateAcceptForm.resx diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.Designer.cs new file mode 100644 index 000000000..b7d9b517b --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.Designer.cs @@ -0,0 +1,111 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + partial class SharpUpdateDownloadForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); + this.kpbDownloadProgress = new Krypton.Toolkit.KryptonProgressBar(); + this.klblHeader = new Krypton.Toolkit.KryptonLabel(); + this.klblProgress = new Krypton.Toolkit.KryptonLabel(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); + this.kryptonPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // kryptonPanel1 + // + this.kryptonPanel1.Controls.Add(this.klblProgress); + this.kryptonPanel1.Controls.Add(this.kpbDownloadProgress); + this.kryptonPanel1.Controls.Add(this.klblHeader); + this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); + this.kryptonPanel1.Name = "kryptonPanel1"; + this.kryptonPanel1.Size = new System.Drawing.Size(459, 182); + this.kryptonPanel1.TabIndex = 0; + // + // kpbDownloadProgress + // + this.kpbDownloadProgress.Location = new System.Drawing.Point(58, 109); + this.kpbDownloadProgress.Name = "kpbDownloadProgress"; + this.kpbDownloadProgress.Size = new System.Drawing.Size(349, 26); + this.kpbDownloadProgress.StateCommon.Back.Color1 = System.Drawing.Color.Green; + this.kpbDownloadProgress.StateDisabled.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; + this.kpbDownloadProgress.StateNormal.Back.ColorStyle = Krypton.Toolkit.PaletteColorStyle.OneNote; + this.kpbDownloadProgress.TabIndex = 1; + this.kpbDownloadProgress.Text = "0%"; + this.kpbDownloadProgress.UseValueAsText = true; + this.kpbDownloadProgress.Values.Text = "0%"; + // + // klblHeader + // + this.klblHeader.Location = new System.Drawing.Point(58, 35); + this.klblHeader.Name = "klblHeader"; + this.klblHeader.Size = new System.Drawing.Size(349, 49); + this.klblHeader.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.klblHeader.TabIndex = 0; + this.klblHeader.Values.Text = "Downloading Update..."; + // + // klblProgress + // + this.klblProgress.AutoSize = false; + this.klblProgress.Location = new System.Drawing.Point(58, 142); + this.klblProgress.Name = "klblProgress"; + this.klblProgress.Size = new System.Drawing.Size(349, 25); + this.klblProgress.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.klblProgress.StateCommon.ShortText.TextH = Krypton.Toolkit.PaletteRelativeAlign.Center; + this.klblProgress.TabIndex = 2; + this.klblProgress.Values.Text = ""; + // + // SharpUpdateDownloadForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(459, 182); + this.Controls.Add(this.kryptonPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SharpUpdateDownloadForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Downloading Update"; + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); + this.kryptonPanel1.ResumeLayout(false); + this.kryptonPanel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private KryptonPanel kryptonPanel1; + private KryptonLabel klblHeader; + private KryptonProgressBar kpbDownloadProgress; + private KryptonLabel klblProgress; + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.cs new file mode 100644 index 000000000..c7c4facf3 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.cs @@ -0,0 +1,164 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + public partial class SharpUpdateDownloadForm : KryptonForm + { + #region Instance Fields + + /// + /// The web client to download the update + /// + private WebClient _webClient; + + /// + /// The thread to hash the file on + /// + private BackgroundWorker _bgWorker; + + /// + /// The MD5 hash of the file to download + /// + private string _md5; + + #endregion + + #region Properties + + /// + /// Gets the temp file path for the downloaded file + /// + internal string TempFilePath { get; } + + #endregion + + public SharpUpdateDownloadForm(Uri location, string md5, Icon? programIcon) + { + InitializeComponent(); + + if (programIcon != null) + { + Icon = programIcon; + } + + TempFilePath = Path.GetTempFileName(); + + _md5 = md5; + + _webClient = new WebClient(); + + _webClient.DownloadProgressChanged += DownloadProgressChanged; + + _webClient.DownloadFileCompleted += DownloadFileCompleted; + + _bgWorker = new BackgroundWorker(); + + _bgWorker.DoWork += DoWork; + + _bgWorker.RunWorkerCompleted += RunWorkerCompleted; + + try + { + _webClient.DownloadFileAsync(location, TempFilePath); + } + catch (Exception e) + { + DialogResult = DialogResult.No; + + Close(); + } + } + + private void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + throw new NotImplementedException(); + } + + private void DoWork(object sender, DoWorkEventArgs e) + { + throw new NotImplementedException(); + } + + private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) + { + if (e.Error != null) + { + DialogResult = DialogResult.No; + + Close(); + } + else if (e.Cancelled) + { + DialogResult = DialogResult.Abort; + + Close(); + } + else + { + // Show the "Hashing" label and set the progressbar to marquee + klblProgress.Text = ; + + kpbDownloadProgress.Style = ProgressBarStyle.Marquee; + + // Start the hashing + _bgWorker.RunWorkerAsync(new string[] { TempFilePath, _md5 }); + } + } + + private void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) + { + klblProgress.Text = + $"{} {FormatBytes(e.BytesReceived, 1, true)} {} {FormatBytes(e.TotalBytesToReceive, 1, true)}"; + + kpbDownloadProgress.Value = e.ProgressPercentage; + } + + /// + /// Formats the byte count to closest byte type + /// + /// The amount of bytes + /// How many decimal places to show + /// Add the byte type on the end of the string + /// The bytes formatted as specified + private string FormatBytes(long bytes, int decimalPlaces, bool showByteType) + { + double newBytes = bytes; + string formatString = "{0"; + string byteType = "B"; + + // Check if best size in KB + if (newBytes > 1024 && newBytes < 1048576) + { + newBytes /= 1024; + byteType = "KB"; + } + else if (newBytes > 1048576 && newBytes < 1073741824) + { + // Check if best size in MB + newBytes /= 1048576; + byteType = "MB"; + } + else + { + // Best size in GB + newBytes /= 1073741824; + byteType = "GB"; + } + + // Show decimals + if (decimalPlaces > 0) + formatString += ":0."; + + // Add decimals + for (int i = 0; i < decimalPlaces; i++) + formatString += "0"; + + // Close placeholder + formatString += "}"; + + // Add byte type + if (showByteType) + formatString += byteType; + + return string.Format(formatString, newBytes); + } + } +} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateInfoForm.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.resx similarity index 100% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateInfoForm.resx rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateDownloadForm.resx diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.Designer.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.Designer.cs new file mode 100644 index 000000000..278965015 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.Designer.cs @@ -0,0 +1,165 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + partial class SharpUpdateInfoForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); + this.kryptonBorderEdge1 = new Krypton.Toolkit.KryptonBorderEdge(); + this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); + this.kbtnBack = new Krypton.Toolkit.KryptonButton(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.kwlNewVersion = new Krypton.Toolkit.KryptonWrapLabel(); + this.klblDescription = new Krypton.Toolkit.KryptonLabel(); + this.krtxtDescription = new Krypton.Toolkit.KryptonRichTextBox(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); + this.kryptonPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); + this.kryptonPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // kryptonPanel1 + // + this.kryptonPanel1.Controls.Add(this.kbtnBack); + this.kryptonPanel1.Controls.Add(this.kryptonBorderEdge1); + this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.kryptonPanel1.Location = new System.Drawing.Point(0, 255); + this.kryptonPanel1.Name = "kryptonPanel1"; + this.kryptonPanel1.PanelBackStyle = Krypton.Toolkit.PaletteBackStyle.PanelAlternate; + this.kryptonPanel1.Size = new System.Drawing.Size(284, 50); + this.kryptonPanel1.TabIndex = 0; + // + // kryptonBorderEdge1 + // + this.kryptonBorderEdge1.BorderStyle = Krypton.Toolkit.PaletteBorderStyle.HeaderPrimary; + this.kryptonBorderEdge1.Dock = System.Windows.Forms.DockStyle.Top; + this.kryptonBorderEdge1.Location = new System.Drawing.Point(0, 0); + this.kryptonBorderEdge1.Name = "kryptonBorderEdge1"; + this.kryptonBorderEdge1.Size = new System.Drawing.Size(284, 1); + this.kryptonBorderEdge1.Text = "kryptonBorderEdge1"; + // + // kryptonPanel2 + // + this.kryptonPanel2.Controls.Add(this.krtxtDescription); + this.kryptonPanel2.Controls.Add(this.klblDescription); + this.kryptonPanel2.Controls.Add(this.kwlNewVersion); + this.kryptonPanel2.Controls.Add(this.pictureBox1); + this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.kryptonPanel2.Location = new System.Drawing.Point(0, 0); + this.kryptonPanel2.Name = "kryptonPanel2"; + this.kryptonPanel2.Size = new System.Drawing.Size(284, 255); + this.kryptonPanel2.TabIndex = 1; + // + // kbtnBack + // + this.kbtnBack.Location = new System.Drawing.Point(96, 13); + this.kbtnBack.Name = "kbtnBack"; + this.kbtnBack.Size = new System.Drawing.Size(90, 25); + this.kbtnBack.TabIndex = 1; + this.kbtnBack.Values.Text = "kryptonButton1"; + this.kbtnBack.Click += new System.EventHandler(this.kbtnBack_Click); + // + // pictureBox1 + // + this.pictureBox1.BackColor = System.Drawing.Color.Transparent; + this.pictureBox1.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.update_48_x_48; + this.pictureBox1.Location = new System.Drawing.Point(13, 13); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(48, 48); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // kwlNewVersion + // + this.kwlNewVersion.AutoSize = false; + this.kwlNewVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kwlNewVersion.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); + this.kwlNewVersion.LabelStyle = Krypton.Toolkit.LabelStyle.AlternateControl; + this.kwlNewVersion.Location = new System.Drawing.Point(67, 13); + this.kwlNewVersion.Name = "kwlNewVersion"; + this.kwlNewVersion.Size = new System.Drawing.Size(205, 48); + this.kwlNewVersion.StateCommon.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.kwlNewVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // klblDescription + // + this.klblDescription.Location = new System.Drawing.Point(13, 68); + this.klblDescription.Name = "klblDescription"; + this.klblDescription.Size = new System.Drawing.Size(87, 19); + this.klblDescription.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.klblDescription.TabIndex = 3; + this.klblDescription.Values.Text = "kryptonLabel1"; + // + // krtxtDescription + // + this.krtxtDescription.Location = new System.Drawing.Point(13, 94); + this.krtxtDescription.Name = "krtxtDescription"; + this.krtxtDescription.ReadOnly = true; + this.krtxtDescription.Size = new System.Drawing.Size(259, 155); + this.krtxtDescription.TabIndex = 4; + this.krtxtDescription.Text = ""; + this.krtxtDescription.KeyDown += new System.Windows.Forms.KeyEventHandler(this.krtxtDescription_KeyDown); + // + // SharpUpdateInfoForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 305); + this.Controls.Add(this.kryptonPanel2); + this.Controls.Add(this.kryptonPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SharpUpdateInfoForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); + this.kryptonPanel1.ResumeLayout(false); + this.kryptonPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); + this.kryptonPanel2.ResumeLayout(false); + this.kryptonPanel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private KryptonPanel kryptonPanel1; + private KryptonBorderEdge kryptonBorderEdge1; + private KryptonPanel kryptonPanel2; + private KryptonButton kbtnBack; + private PictureBox pictureBox1; + private KryptonWrapLabel kwlNewVersion; + private KryptonLabel klblDescription; + private KryptonRichTextBox krtxtDescription; + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.cs new file mode 100644 index 000000000..944f604eb --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.cs @@ -0,0 +1,35 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + public partial class SharpUpdateInfoForm : KryptonForm + { + public SharpUpdateInfoForm(SharpUpdateLocalAppInfo applicationInfo, SharpUpdateXml updateInfo) + { + InitializeComponent(); + + // Sets the icon if it's not null + if (applicationInfo.ApplicationIcon != null) + { + Icon = applicationInfo.ApplicationIcon; + } + + // Fill in the UI + Text = $@"{applicationInfo.ApplicationName} - Update Info"; + + kwlNewVersion.Text = updateInfo.Tag == JobType.UPDATE ? $"Current Version: {applicationInfo.Version}\nUpdate version: {updateInfo.Version}" : + (updateInfo.Tag == JobType.ADD ? $"Version: {updateInfo.Version}" : ""); + + krtxtDescription.Text = updateInfo.Description; + } + + private void kbtnBack_Click(object sender, EventArgs e) => Close(); + + private void krtxtDescription_KeyDown(object sender, KeyEventArgs e) + { + // Only allow Ctrl + C to copy text + if (!(e.Control && e.KeyCode == Keys.C)) + { + e.SuppressKeyPress = true; + } + } + } +} diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.resx similarity index 70% rename from Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.resx rename to Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.resx index 2003f9b7e..1af7de150 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/NetSparkle/UX/NetSparkleToastNotifierWindow.resx +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls Visuals/SharpUpdateInfoForm.resx @@ -117,36 +117,4 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - iVBORw0KGgoAAAANSUhEUgAAAUoAAABkCAYAAADg+Hn3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVHhe7djRSQRAEERB070YzcEwTENROEGUeR1AfRTL - JvBo5uX17f3j8Xj88Pf39/f//X95fgD4SygBglACDL5vlAD8z6IECEIJEIQSYOBGCXCwKAGCUAIEoQQY - uFECHCxKgCCUAEEoAQZulAAHixIgCCVAEEqAgRslwMGiBAhCCRCEEmDgRglwsCgBglACBKEEGLhRAhws - SoAglABBKAEGbpQAB4sSIAglQBBKgIEbJcDBogQIQgkQhBJg4EYJcLAoAYJQAgShBBi4UQIcLEqAIJQA - QSgBBm6UAAeLEiAIJUAQSoCBGyXAwaIECEIJEIQSYOBGCXCwKAGCUAIEoQQYuFECHCxKgCCUAEEoAQZu - lAAHixIgCCVAEEqAgRslwMGiBAhCCRCEEmDgRglwsCgBglACBKEEGLhRAhwsSoAglABBKAEGbpQAB4sS - IAglQBBKgIEbJcDBogQIQgkQhBJg4EYJcLAoAYJQAgShBBi4UQIcLEqAIJQAQSgBBm6UAAeLEiAIJUD4 - Fcqv98nf39/f//l///gEy/sxAhS5jXYAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAAP4AAABeCAYAAAADiqm/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHuSURBVHhe7dfBSQQADETRbX6rsgfL2DZWEBREpoGfd3iH - XAcmIY+Pz9f7+Xz+MpvN/fnxM/CXXChT/EEulCk+HPT94/OfhUiZiz/IhTLFH+RCmeLDQX78wUKkzMUf - 5EKZ4g9yoUzx4SA//mAhUubiD3KhTPEHuVCm+HCQH3+wEClz8Qe5UKb4g1woU3w4yI8/WIiUufiDXChT - /EEulCk+HOTHHyxEylz8QS6UKf4gF8oUHw7y4w8WImUu/iAXyhR/kAtlig8H+fEHC5EyF3+QC2WKP8iF - MsWHg/z4g4VImYs/yIUyxR/kQpniw0F+/MFCpMzFH+RCmeIPcqFM8eEgP/5gIVLm4g9yoUzxB7lQpvhw - kB9/sBApc/EHuVCm+INcKFN8OMiPP1iIlLn4g1woU/xBLpQpPhzkxx8sRMpc/EEulCn+IBfKFB8O8uMP - FiJlLv4gF8oUf5ALZYoPB/nxBwuRMhd/kAtlij/IhTLFh4P8+IOFSJmLP8iFMsUf5EKZ4sNBfvzBQqTM - xR/kQpniD3KhTPHhID/+YCFS5uIPcqFM8Qe5UKb4cJAff7AQKXPxB7lQpviDXChTfDjIjz9YiJS5+INc - KFP8QS6UKT4c5McfLETKXPxBLpQp/iAXyhQfDlL8QS6UKf4gF7pe7y90Q9A7UbF14gAAAABJRU5ErkJg - gg== - - - - 17, 17 - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls/SharpUpdateLanguageManager.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls/SharpUpdateLanguageManager.cs new file mode 100644 index 000000000..a5713914b --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Controls/SharpUpdateLanguageManager.cs @@ -0,0 +1,30 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + [Category(@"Code")] + [Description(@"Access 'Global' Krypton string settings.")] + [ToolboxItem(true)] + public class SharpUpdateLanguageManager : Component + { + #region Public + + [Category(@"Visuals")] + [Description(@"Collection of SharpUpdateInfoForm strings.")] + [MergableProperty(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + [Localizable(true)] + public SharpUpdateInfoFormStrings SharpUpdateInfoFormStrings => InfoFormStrings; + + private bool ShouldSerializeSharpUpdateInfoFormStringsStrings() => !InfoFormStrings.IsDefault; + + /// Resets the color strings. + public void ResetSharpUpdateInfoFormStringsStrings() => InfoFormStrings.Reset(); + + #endregion + + #region Static Strings + + public static SharpUpdateInfoFormStrings InfoFormStrings { get; } = new SharpUpdateInfoFormStrings(); + + #endregion + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/HashType.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/HashType.cs index 36604ffb0..d01e7f507 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/HashType.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/HashType.cs @@ -1,41 +1,14 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { /// /// The type of hash to create /// internal enum HashType { - Md5, - Sha1, - Sha256, - Sha384, - Sha512 + MD5 = 0, + SHA1 = 1, + SHA256 = 2, + SHA384 = 3, + SHA512 = 4 } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/JobType.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/JobType.cs index 0796c19fe..0dcd7dd10 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/JobType.cs +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Enumerations/JobType.cs @@ -1,36 +1,9 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate +namespace Krypton.Toolkit.Suite.Extended.Software.Updater { public enum JobType { - Update, - Add, - Remove + UPDATE = 0, + ADD = 1, + REMOVE = 2, } } \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateAcceptFormStrings.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateAcceptFormStrings.cs new file mode 100644 index 000000000..c6881e500 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateAcceptFormStrings.cs @@ -0,0 +1,24 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + [TypeConverter(typeof(ExpandableObjectConverter))] + public class SharpUpdateAcceptFormStrings : GlobalId + { + #region Static Fields + + + + #endregion + + #region Identity + + + + #endregion + + #region Public + + + + #endregion + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateDownloadFormStrings.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateDownloadFormStrings.cs new file mode 100644 index 000000000..79bb8b565 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateDownloadFormStrings.cs @@ -0,0 +1,24 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + [TypeConverter(typeof(ExpandableObjectConverter))] + public class SharpUpdateDownloadFormStrings : GlobalId + { + #region Static Fields + + + + #endregion + + #region Identity + + + + #endregion + + #region Public + + + + #endregion + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateGeneralStrings.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateGeneralStrings.cs new file mode 100644 index 000000000..0062e4c65 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateGeneralStrings.cs @@ -0,0 +1,24 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + [TypeConverter(typeof(ExpandableObjectConverter))] + public class SharpUpdateGeneralStrings : GlobalId + { + #region Static Fields + + + + #endregion + + #region Identity + + + + #endregion + + #region Public + + + + #endregion + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateInfoFormStrings.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateInfoFormStrings.cs new file mode 100644 index 000000000..83b3973d3 --- /dev/null +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/Translations/SharpUpdateInfoFormStrings.cs @@ -0,0 +1,126 @@ +namespace Krypton.Toolkit.Suite.Extended.Software.Updater +{ + [TypeConverter(typeof(ExpandableObjectConverter))] + public class SharpUpdateInfoFormStrings : GlobalId + { + #region Static Fields + + private const string DEFAULT_DETAILS = @"Details..."; + + private const string DEFAULT_HEADER = @"An update is available!\r\nWould you like to update?"; + + private const string DEFAULT_TITLE = @"Available Update"; + + private const string DEFAULT_UPDATE = @"Update"; + + private const string DEFAULT_NEW_VERSION = @"New Version"; + + private const string DEFAULT_NEW = @"New"; + + private const string DEFAULT_VERSION = @"Version"; + + private const string DEFAULT_REMOVE = @"Remove"; + + #endregion + + #region Identity + + public SharpUpdateInfoFormStrings() + { + Reset(); + } + + public override string ToString() => !IsDefault ? "Modified" : string.Empty; + + #endregion + + #region Public + + [Browsable(false)] + public bool IsDefault => Details.Equals(DEFAULT_DETAILS) && + Header.Equals(DEFAULT_HEADER) && + Title.Equals(DEFAULT_TITLE) && + Update.Equals(DEFAULT_UPDATE) && + NewVersion.Equals(DEFAULT_NEW_VERSION) && + New.Equals(DEFAULT_NEW) && + Version.Equals(DEFAULT_VERSION) && + Remove.Equals(DEFAULT_REMOVE); + + public void Reset() + { + Details = DEFAULT_DETAILS; + + Header = DEFAULT_HEADER; + + Title = DEFAULT_TITLE; + + Update = DEFAULT_UPDATE; + + NewVersion = DEFAULT_NEW_VERSION; + + New = DEFAULT_NEW; + + Version = DEFAULT_VERSION; + + Remove = DEFAULT_REMOVE; + } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised details string.")] + [DefaultValue(DEFAULT_DETAILS)] + [RefreshProperties(RefreshProperties.All)] + public string Details { get; set; } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised header string.")] + [DefaultValue(DEFAULT_HEADER)] + [RefreshProperties(RefreshProperties.All)] + public string Header { get; set; } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised title string.")] + [DefaultValue(DEFAULT_TITLE)] + [RefreshProperties(RefreshProperties.All)] + public string Title { get; set; } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised update string.")] + [DefaultValue(DEFAULT_UPDATE)] + [RefreshProperties(RefreshProperties.All)] + public string Update { get; set; } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised new version string.")] + [DefaultValue(DEFAULT_NEW_VERSION)] + [RefreshProperties(RefreshProperties.All)] + public string NewVersion { get; set; } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised new string.")] + [DefaultValue(DEFAULT_NEW)] + [RefreshProperties(RefreshProperties.All)] + public string New { get; set; } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised version string.")] + [DefaultValue(DEFAULT_VERSION)] + [RefreshProperties(RefreshProperties.All)] + public string Version { get; set; } + + [Localizable(true)] + [Category(@"Visuals")] + [Description(@"Localised remove string.")] + [DefaultValue(DEFAULT_REMOVE)] + [RefreshProperties(RefreshProperties.All)] + public string Remove { get; set; } + + #endregion + } +} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateAcceptForm.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateAcceptForm.cs deleted file mode 100644 index 9ee64dea3..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateAcceptForm.cs +++ /dev/null @@ -1,245 +0,0 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate -{ - public class SharpUpdateAcceptForm : KryptonForm - { - #region Design Code - private KryptonPanel kryptonPanel1; - private KryptonButton kbtnYes; - private KryptonButton kbtnNo; - private KryptonButton kbtnDetails; - private KryptonBorderEdge kryptonBorderEdge1; - private KryptonPanel kryptonPanel2; - private PictureBox pictureBox; - private KryptonWrapLabel kwlblNewVersion; - private KryptonWrapLabel kwlblUpdateAvail; - - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SharpUpdateAcceptForm)); - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kbtnYes = new Krypton.Toolkit.KryptonButton(); - this.kbtnNo = new Krypton.Toolkit.KryptonButton(); - this.kbtnDetails = new Krypton.Toolkit.KryptonButton(); - this.kryptonBorderEdge1 = new Krypton.Toolkit.KryptonBorderEdge(); - this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); - this.pictureBox = new System.Windows.Forms.PictureBox(); - this.kwlblNewVersion = new Krypton.Toolkit.KryptonWrapLabel(); - this.kwlblUpdateAvail = new Krypton.Toolkit.KryptonWrapLabel(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); - this.kryptonPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kbtnYes); - this.kryptonPanel1.Controls.Add(this.kbtnNo); - this.kryptonPanel1.Controls.Add(this.kbtnDetails); - this.kryptonPanel1.Controls.Add(this.kryptonBorderEdge1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 153); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.PanelBackStyle = Krypton.Toolkit.PaletteBackStyle.PanelAlternate; - this.kryptonPanel1.Size = new System.Drawing.Size(399, 50); - this.kryptonPanel1.TabIndex = 0; - // - // kbtnYes - // - this.kbtnYes.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.kbtnYes.DialogResult = System.Windows.Forms.DialogResult.Yes; - this.kbtnYes.Location = new System.Drawing.Point(105, 13); - this.kbtnYes.Name = "kbtnYes"; - this.kbtnYes.Size = new System.Drawing.Size(90, 25); - this.kbtnYes.TabIndex = 2; - this.kbtnYes.Values.Text = "&Yes"; - this.kbtnYes.Click += new System.EventHandler(this.kbtnYes_Click); - // - // kbtnNo - // - this.kbtnNo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.kbtnNo.DialogResult = System.Windows.Forms.DialogResult.No; - this.kbtnNo.Location = new System.Drawing.Point(201, 13); - this.kbtnNo.Name = "kbtnNo"; - this.kbtnNo.Size = new System.Drawing.Size(90, 25); - this.kbtnNo.TabIndex = 1; - this.kbtnNo.Values.Text = "&No"; - this.kbtnNo.Click += new System.EventHandler(this.kbtnNo_Click); - // - // kbtnDetails - // - this.kbtnDetails.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.kbtnDetails.Location = new System.Drawing.Point(297, 13); - this.kbtnDetails.Name = "kbtnDetails"; - this.kbtnDetails.Size = new System.Drawing.Size(90, 25); - this.kbtnDetails.TabIndex = 0; - this.kbtnDetails.Values.Text = "Detai&ls"; - this.kbtnDetails.Click += new System.EventHandler(this.kbtnDetails_Click); - // - // kryptonBorderEdge1 - // - this.kryptonBorderEdge1.BorderStyle = Krypton.Toolkit.PaletteBorderStyle.HeaderSecondary; - this.kryptonBorderEdge1.Dock = System.Windows.Forms.DockStyle.Top; - this.kryptonBorderEdge1.Location = new System.Drawing.Point(0, 0); - this.kryptonBorderEdge1.Name = "kryptonBorderEdge1"; - this.kryptonBorderEdge1.Size = new System.Drawing.Size(399, 1); - this.kryptonBorderEdge1.Text = "kryptonBorderEdge1"; - // - // kryptonPanel2 - // - this.kryptonPanel2.Controls.Add(this.pictureBox); - this.kryptonPanel2.Controls.Add(this.kwlblNewVersion); - this.kryptonPanel2.Controls.Add(this.kwlblUpdateAvail); - this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel2.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel2.Name = "kryptonPanel2"; - this.kryptonPanel2.Size = new System.Drawing.Size(399, 153); - this.kryptonPanel2.TabIndex = 1; - // - // pictureBox - // - this.pictureBox.BackColor = System.Drawing.Color.Transparent; - this.pictureBox.Image = global::Krypton.Toolkit.Suite.Extended.Software.Updater.Properties.Resources.throbber_80; - this.pictureBox.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox.InitialImage"))); - this.pictureBox.Location = new System.Drawing.Point(12, 12); - this.pictureBox.Name = "pictureBox"; - this.pictureBox.Size = new System.Drawing.Size(80, 80); - this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox.TabIndex = 2; - this.pictureBox.TabStop = false; - // - // kwlblNewVersion - // - this.kwlblNewVersion.AutoSize = false; - this.kwlblNewVersion.Font = new System.Drawing.Font("Segoe UI", 9F); - this.kwlblNewVersion.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlblNewVersion.Location = new System.Drawing.Point(106, 81); - this.kwlblNewVersion.Name = "kwlblNewVersion"; - this.kwlblNewVersion.Size = new System.Drawing.Size(281, 58); - this.kwlblNewVersion.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // kwlblUpdateAvail - // - this.kwlblUpdateAvail.AutoSize = false; - this.kwlblUpdateAvail.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlblUpdateAvail.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(57)))), ((int)(((byte)(91))))); - this.kwlblUpdateAvail.Location = new System.Drawing.Point(106, 12); - this.kwlblUpdateAvail.Name = "kwlblUpdateAvail"; - this.kwlblUpdateAvail.Size = new System.Drawing.Size(281, 65); - this.kwlblUpdateAvail.StateCommon.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.kwlblUpdateAvail.Text = "An update is available!\r\nWould you like to update?"; - this.kwlblUpdateAvail.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // SharpUpdateAcceptForm - // - this.ClientSize = new System.Drawing.Size(399, 203); - this.Controls.Add(this.kryptonPanel2); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "SharpUpdateAcceptForm"; - this.ShowIcon = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); - this.kryptonPanel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); - this.ResumeLayout(false); - - } - #endregion - - #region Variables - /// - /// The program to update's info - /// - private SharpUpdateLocalAppInfo _applicationInfo; - - /// - /// The update info from the update.xml - /// - private SharpUpdateXml _updateInfo; - - /// - /// The update info display form - /// - private SharpUpdateInfoForm _updateInfoForm; - #endregion - - #region Constructor - internal SharpUpdateAcceptForm(SharpUpdateLocalAppInfo updateLocalAppInfo, SharpUpdateXml updateXmlInfo, int numCurUpdate, int totalUpdate) - { - InitializeComponent(); - - _applicationInfo = updateLocalAppInfo; - - _updateInfo = updateXmlInfo; - - Text = $"{_applicationInfo.ApplicationName} - ({numCurUpdate}/{totalUpdate} Available Update"; - - if (_applicationInfo.ApplicationName != null) - { - Icon = _applicationInfo.ApplicationIcon; - } - - kwlblNewVersion.Text = updateXmlInfo.Tag != JobType.Remove ? string.Format(updateXmlInfo.Tag == JobType.Update ? "Update: {0}\nNew Version: {1}" : "New: {0}\nVersion: {1}", Path.GetFileName(_applicationInfo.ApplicationPath), _updateInfo.Version.ToString()) : - $"Remove: {Path.GetFileName(_applicationInfo.ApplicationPath)}"; - } - #endregion - - private void kbtnYes_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Yes; - - Close(); - } - - private void kbtnNo_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.No; - - Close(); - } - - private void kbtnDetails_Click(object sender, EventArgs e) - { - if (_updateInfoForm == null) - { - _updateInfoForm = new SharpUpdateInfoForm(_applicationInfo, _updateInfo); - } - - _updateInfoForm.Show(this); - } - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateAcceptForm.resx b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateAcceptForm.resx deleted file mode 100644 index e837a377b..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateAcceptForm.resx +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - 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 - 8cInr3xEAQEAOw== - - - \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateDownloadForm.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateDownloadForm.cs deleted file mode 100644 index 7612b8186..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateDownloadForm.cs +++ /dev/null @@ -1,354 +0,0 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate -{ - internal class SharpUpdateDownloadForm : KryptonForm - { - #region Design Code - private KryptonPanel kryptonPanel1; - private ProgressBar progressBarAll; - private KryptonLabel klblProgress; - private ProgressBar progressBar; - private KryptonLabel klblDownloading; - - private void InitializeComponent() - { - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.progressBarAll = new System.Windows.Forms.ProgressBar(); - this.klblProgress = new Krypton.Toolkit.KryptonLabel(); - this.progressBar = new System.Windows.Forms.ProgressBar(); - this.klblDownloading = new Krypton.Toolkit.KryptonLabel(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.progressBarAll); - this.kryptonPanel1.Controls.Add(this.klblProgress); - this.kryptonPanel1.Controls.Add(this.progressBar); - this.kryptonPanel1.Controls.Add(this.klblDownloading); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.Size = new System.Drawing.Size(413, 196); - this.kryptonPanel1.TabIndex = 1; - // - // progressBarAll - // - this.progressBarAll.Location = new System.Drawing.Point(34, 151); - this.progressBarAll.Name = "progressBarAll"; - this.progressBarAll.Size = new System.Drawing.Size(344, 23); - this.progressBarAll.TabIndex = 4; - // - // klblProgress - // - this.klblProgress.AutoSize = false; - this.klblProgress.Location = new System.Drawing.Point(34, 122); - this.klblProgress.Name = "klblProgress"; - this.klblProgress.Size = new System.Drawing.Size(344, 23); - this.klblProgress.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.klblProgress.StateCommon.ShortText.TextH = Krypton.Toolkit.PaletteRelativeAlign.Center; - this.klblProgress.TabIndex = 3; - this.klblProgress.Values.Text = ""; - // - // progressBar - // - this.progressBar.Location = new System.Drawing.Point(34, 83); - this.progressBar.Name = "progressBar"; - this.progressBar.Size = new System.Drawing.Size(344, 23); - this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous; - this.progressBar.TabIndex = 2; - // - // klblDownloading - // - this.klblDownloading.AutoSize = false; - this.klblDownloading.Location = new System.Drawing.Point(12, 21); - this.klblDownloading.Name = "klblDownloading"; - this.klblDownloading.Size = new System.Drawing.Size(389, 45); - this.klblDownloading.StateCommon.ShortText.Font = new System.Drawing.Font("Segoe UI", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.klblDownloading.StateCommon.ShortText.TextH = Krypton.Toolkit.PaletteRelativeAlign.Center; - this.klblDownloading.TabIndex = 0; - this.klblDownloading.Values.Text = "Downloading update..."; - // - // SharpUpdateDownloadForm - // - this.ClientSize = new System.Drawing.Size(413, 196); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "SharpUpdateDownloadForm"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Downloading Update"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SharpUpdateDownloadForm_FormClosing); - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SharpUpdateDownloadForm_FormClosed); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.ResumeLayout(false); - - } - #endregion - - #region Variables - /// - /// The web client to download the update - /// - private WebClient _webClient; - - /// - /// The thread to hash the file on - /// - private BackgroundWorker _bgWorker; - - /// - /// The MD5 hash of the file to download - /// - private string _md5; - #endregion - - #region Property - /// - /// Gets the temp file path for the downloaded file - /// - internal string TempFilePath { get; } - #endregion - - #region Constructor - internal SharpUpdateDownloadForm(Uri location, string md5, Icon applicationIcon) - { - InitializeComponent(); - - if (applicationIcon != null) - { - Icon = applicationIcon; - } - else - { - Icon = null; - } - - // Set the temp file name and create new 0-byte file - TempFilePath = Path.GetTempFileName(); - - _md5 = md5; - - // Set up WebClient to download file - _webClient = new WebClient(); - _webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged); - _webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient_DownloadFileCompleted); - - // Set up backgroundworker to hash file - _bgWorker = new BackgroundWorker(); - _bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork); - _bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted); - - // Download file - try { _webClient.DownloadFileAsync(location, this.TempFilePath); } - catch { this.DialogResult = DialogResult.No; this.Close(); } - } - #endregion - - #region Methods - /// - /// Get the size of a file - /// - /// URL to the file - /// Size of file in bytes - private static long GetSizeOfFile(string location) - { - try - { - WebRequest req = HttpWebRequest.Create(location); - req.Method = "HEAD"; - WebResponse resp = req.GetResponse(); - long ContentLength; - if (long.TryParse(resp.Headers.Get("Content-Length"), out ContentLength)) - { - resp.Close(); - return ContentLength; - } - resp.Close(); - return 0; - } - catch { return 0; } - } - - /// - /// Formats the byte _count to closest byte type - /// - /// The amount of bytes - /// How many decimal places to show - /// Add the byte type on the end of the string - /// The bytes formatted as specified - private string FormatBytes(long bytes, int decimalPlaces, bool showByteType) - { - double newBytes = bytes; - string formatString = "{0"; - string byteType = "B"; - - // Check if best size in KB - if (newBytes > 1024 && newBytes < 1048576) - { - newBytes /= 1024; - byteType = "KB"; - } - else if (newBytes > 1048576 && newBytes < 1073741824) - { - // Check if best size in MB - newBytes /= 1048576; - byteType = "MB"; - } - else - { - // Best size in GB - newBytes /= 1073741824; - byteType = "GB"; - } - - // Show decimals - if (decimalPlaces > 0) - { - formatString += ":0."; - } - - // Add decimals - for (int i = 0; i < decimalPlaces; i++) - formatString += "0"; - - // Close placeholder - formatString += "}"; - - // Add byte type - if (showByteType) - { - formatString += byteType; - } - - return String.Format(formatString, newBytes); - } - #endregion - - #region Event Handlers - /// - /// Downloads file from server - /// - private void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) - { - // Update progressbar on download - klblProgress.Text = string.Format("Downloaded {0} of {1}", FormatBytes(e.BytesReceived, 1, true), FormatBytes(e.TotalBytesToReceive, 1, true)); - progressBar.Value = e.ProgressPercentage; - } - - /// - /// Setup webClient to download the next file or start hashing - /// - /// - /// - private void webClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) - { - if (e.Error != null) - { - this.DialogResult = DialogResult.No; - this.Close(); - } - else if (e.Cancelled) - { - this.DialogResult = DialogResult.Abort; - this.Close(); - } - else - { - // Show the "Hashing" label and set the progressbar to marquee - this.klblProgress.Text = "Verifying Download..."; - this.progressBar.Style = ProgressBarStyle.Marquee; - - // Start the hashing - _bgWorker.RunWorkerAsync(new string[] { this.TempFilePath, _md5 }); - } - } - - /// - /// Hash file and compare - /// - /// - /// string[2] {FILENAME, MD5} - private void bgWorker_DoWork(object sender, DoWorkEventArgs e) - { - string file = ((string[])e.Argument)[0]; - string updateMD5 = ((string[])e.Argument)[1]; - - // Hash the file and compare to the hash in the update xml - if (Hasher.HashFile(file, HashType.Md5) != updateMD5.ToUpper()) - { - e.Result = DialogResult.No; - } - else - { - e.Result = DialogResult.OK; - } - } - - /// - /// Check if all files are ok and start next - /// - /// - /// - private void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - DialogResult = (DialogResult)e.Result; - - Close(); - } - #endregion - - private void SharpUpdateDownloadForm_FormClosing(object sender, FormClosingEventArgs e) - { - - } - - private void SharpUpdateDownloadForm_FormClosed(object sender, FormClosedEventArgs e) - { - if (_webClient.IsBusy) - { - _webClient.CancelAsync(); - - DialogResult = DialogResult.Abort; - } - - if (_bgWorker.IsBusy) - { - _bgWorker.CancelAsync(); - - DialogResult = DialogResult.Abort; - } - } - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateInfoForm.cs b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateInfoForm.cs deleted file mode 100644 index e2296b263..000000000 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Software.Updater/Sharp Update/UX/SharpUpdateInfoForm.cs +++ /dev/null @@ -1,212 +0,0 @@ -#region MIT License -/* - * MIT License - * - * Copyright (c) 2017 - 2023 Krypton Suite - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ -#endregion - -namespace Krypton.Toolkit.Suite.Extended.Software.Updater.SharpUpdate -{ - internal class SharpUpdateInfoForm : KryptonForm - { - #region Design Code - private KryptonButton kbtnBack; - private KryptonBorderEdge kryptonBorderEdge1; - private KryptonPanel kryptonPanel2; - private KryptonTextBox ktxtDescription; - private KryptonLabel klblDescription; - private KryptonLabel klblVersions; - private PictureBox pictureBox1; - private KryptonPanel kryptonPanel1; - - private void InitializeComponent() - { - this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - this.kbtnBack = new Krypton.Toolkit.KryptonButton(); - this.kryptonBorderEdge1 = new Krypton.Toolkit.KryptonBorderEdge(); - this.kryptonPanel2 = new Krypton.Toolkit.KryptonPanel(); - this.ktxtDescription = new Krypton.Toolkit.KryptonTextBox(); - this.klblDescription = new Krypton.Toolkit.KryptonLabel(); - this.klblVersions = new Krypton.Toolkit.KryptonLabel(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); - this.kryptonPanel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).BeginInit(); - this.kryptonPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); - // - // kryptonPanel1 - // - this.kryptonPanel1.Controls.Add(this.kbtnBack); - this.kryptonPanel1.Controls.Add(this.kryptonBorderEdge1); - this.kryptonPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.kryptonPanel1.Location = new System.Drawing.Point(0, 239); - this.kryptonPanel1.Name = "kryptonPanel1"; - this.kryptonPanel1.PanelBackStyle = Krypton.Toolkit.PaletteBackStyle.PanelAlternate; - this.kryptonPanel1.Size = new System.Drawing.Size(284, 50); - this.kryptonPanel1.TabIndex = 0; - // - // kbtnBack - // - this.kbtnBack.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.kbtnBack.Location = new System.Drawing.Point(97, 13); - this.kbtnBack.Name = "kbtnBack"; - this.kbtnBack.Size = new System.Drawing.Size(90, 25); - this.kbtnBack.TabIndex = 1; - this.kbtnBack.Values.Text = "B&ack"; - this.kbtnBack.Click += new System.EventHandler(this.kbtnBack_Click); - // - // kryptonBorderEdge1 - // - this.kryptonBorderEdge1.BorderStyle = Krypton.Toolkit.PaletteBorderStyle.HeaderSecondary; - this.kryptonBorderEdge1.Dock = System.Windows.Forms.DockStyle.Top; - this.kryptonBorderEdge1.Location = new System.Drawing.Point(0, 0); - this.kryptonBorderEdge1.Name = "kryptonBorderEdge1"; - this.kryptonBorderEdge1.Size = new System.Drawing.Size(284, 1); - this.kryptonBorderEdge1.Text = "kryptonBorderEdge1"; - // - // kryptonPanel2 - // - this.kryptonPanel2.Controls.Add(this.ktxtDescription); - this.kryptonPanel2.Controls.Add(this.klblDescription); - this.kryptonPanel2.Controls.Add(this.klblVersions); - this.kryptonPanel2.Controls.Add(this.pictureBox1); - this.kryptonPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.kryptonPanel2.Location = new System.Drawing.Point(0, 0); - this.kryptonPanel2.Name = "kryptonPanel2"; - this.kryptonPanel2.Size = new System.Drawing.Size(284, 239); - this.kryptonPanel2.TabIndex = 1; - // - // ktxtDescription - // - this.ktxtDescription.Location = new System.Drawing.Point(12, 124); - this.ktxtDescription.Multiline = true; - this.ktxtDescription.Name = "ktxtDescription"; - this.ktxtDescription.ReadOnly = true; - this.ktxtDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.ktxtDescription.Size = new System.Drawing.Size(260, 95); - this.ktxtDescription.TabIndex = 12; - this.ktxtDescription.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ktxtDescription_KeyDown); - // - // klblDescription - // - this.klblDescription.LabelStyle = Krypton.Toolkit.LabelStyle.BoldControl; - this.klblDescription.Location = new System.Drawing.Point(12, 98); - this.klblDescription.Name = "klblDescription"; - this.klblDescription.Size = new System.Drawing.Size(80, 20); - this.klblDescription.TabIndex = 11; - this.klblDescription.Values.Text = "Description:"; - // - // klblVersions - // - this.klblVersions.AutoSize = false; - this.klblVersions.Location = new System.Drawing.Point(98, 22); - this.klblVersions.Name = "klblVersions"; - this.klblVersions.Size = new System.Drawing.Size(174, 61); - this.klblVersions.StateCommon.ShortText.TextH = Krypton.Toolkit.PaletteRelativeAlign.Center; - this.klblVersions.TabIndex = 10; - this.klblVersions.Values.Text = ""; - // - // pictureBox1 - // - this.pictureBox1.BackColor = System.Drawing.Color.Transparent; - this.pictureBox1.Location = new System.Drawing.Point(12, 12); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(80, 80); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox1.TabIndex = 9; - this.pictureBox1.TabStop = false; - // - // SharpUpdateInfoForm - // - this.ClientSize = new System.Drawing.Size(284, 289); - this.Controls.Add(this.kryptonPanel2); - this.Controls.Add(this.kryptonPanel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "SharpUpdateInfoForm"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); - this.kryptonPanel1.ResumeLayout(false); - this.kryptonPanel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel2)).EndInit(); - this.kryptonPanel2.ResumeLayout(false); - this.kryptonPanel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - #region Constructor - internal SharpUpdateInfoForm(SharpUpdateLocalAppInfo applicationInfo, SharpUpdateXml updateInfo) - { - InitializeComponent(); - - try - { - if (applicationInfo.ApplicationIcon != null) - { - Icon = applicationInfo.ApplicationIcon; - } - - // ReSharper disable VirtualMemberCallInConstructor - Text = Properties.Resources.SharpUpdateInfoForm_Title; - // ReSharper restore VirtualMemberCallInConstructor - - klblVersions.Text = string.Format(Properties.Resources.SharpUpdateInfoForm_Version, applicationInfo.ApplicationAssembly.GetName().Version.ToString(), updateInfo.Version.ToString()); - - klblDescription.Text = Properties.Resources.SharpUpdateInfoForm_lblDescription; - - ktxtDescription.Text = updateInfo.Description; - - kbtnBack.Text = Properties.Resources.SharpUpdateInfoForm_btnBack; - } - catch (Exception e) - { - ExceptionCapture.CaptureException(e); - } - } - #endregion - - private void ktxtDescription_KeyDown(object sender, KeyEventArgs e) - { - if (!(e.Control && e.KeyCode == Keys.C)) - { - e.SuppressKeyPress = true; - } - } - - private void kbtnBack_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - - Close(); - } - } -} \ No newline at end of file diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs 2022.csproj index a86c100fe..e6d5a12cc 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs/Krypton.Toolkit.Suite.Extended.Specialised.Dialogs 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Theme.Switcher/Krypton.Toolkit.Suite.Extended.Theme.Switcher 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Theme.Switcher/Krypton.Toolkit.Suite.Extended.Theme.Switcher 2022.csproj index ea27d531c..565be3635 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Theme.Switcher/Krypton.Toolkit.Suite.Extended.Theme.Switcher 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Theme.Switcher/Krypton.Toolkit.Suite.Extended.Theme.Switcher 2022.csproj @@ -87,9 +87,9 @@ - + - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toast/Krypton.Toolkit.Suite.Extended.Toast 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toast/Krypton.Toolkit.Suite.Extended.Toast 2022.csproj index 1a2947393..b45131a7b 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toast/Krypton.Toolkit.Suite.Extended.Toast 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toast/Krypton.Toolkit.Suite.Extended.Toast 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toggle.Switch/Krypton.Toolkit.Suite.Extended.Toggle.Switch 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toggle.Switch/Krypton.Toolkit.Suite.Extended.Toggle.Switch 2022.csproj index 698821409..983f75eb3 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toggle.Switch/Krypton.Toolkit.Suite.Extended.Toggle.Switch 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Toggle.Switch/Krypton.Toolkit.Suite.Extended.Toggle.Switch 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Box/Krypton.Toolkit.Suite.Extended.Tool.Box 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Box/Krypton.Toolkit.Suite.Extended.Tool.Box 2022.csproj index afe4a57bb..a06e9f74f 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Box/Krypton.Toolkit.Suite.Extended.Tool.Box 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Box/Krypton.Toolkit.Suite.Extended.Tool.Box 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items 2022.csproj index f0daf1f47..d58a9e328 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items/Krypton.Toolkit.Suite.Extended.Tool.Strip.Items 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.TreeGridView/Krypton.Toolkit.Suite.Extended.TreeGridView 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.TreeGridView/Krypton.Toolkit.Suite.Extended.TreeGridView 2022.csproj index 8c164d7ff..b0b2e8d15 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.TreeGridView/Krypton.Toolkit.Suite.Extended.TreeGridView 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.TreeGridView/Krypton.Toolkit.Suite.Extended.TreeGridView 2022.csproj @@ -90,7 +90,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Utilities/Krypton.Toolkit.Suite.Extended.Utilities 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Utilities/Krypton.Toolkit.Suite.Extended.Utilities 2022.csproj index e5c3ed7f5..b9bb499d2 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Utilities/Krypton.Toolkit.Suite.Extended.Utilities 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Utilities/Krypton.Toolkit.Suite.Extended.Utilities 2022.csproj @@ -86,7 +86,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView 2022.csproj index d908b90b6..cee76bf77 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView/Krypton.Toolkit.Suite.Extended.VirtualTreeColumnView 2022.csproj @@ -91,7 +91,7 @@ - + diff --git a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Wizard/Krypton.Toolkit.Suite.Extended.Wizard 2022.csproj b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Wizard/Krypton.Toolkit.Suite.Extended.Wizard 2022.csproj index 5deb9ff79..cd639b724 100644 --- a/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Wizard/Krypton.Toolkit.Suite.Extended.Wizard 2022.csproj +++ b/Source/Krypton Toolkit/Krypton.Toolkit.Suite.Extended.Wizard/Krypton.Toolkit.Suite.Extended.Wizard 2022.csproj @@ -87,7 +87,7 @@ - + diff --git a/Source/Krypton Toolkit/ZipExtractor/Controls Visuals/ZipExtractorWindow.Designer.cs b/Source/Krypton Toolkit/ZipExtractor/Controls Visuals/ZipExtractorWindow.Designer.cs index c18e65cf7..4cc4b72ff 100644 --- a/Source/Krypton Toolkit/ZipExtractor/Controls Visuals/ZipExtractorWindow.Designer.cs +++ b/Source/Krypton Toolkit/ZipExtractor/Controls Visuals/ZipExtractorWindow.Designer.cs @@ -146,6 +146,9 @@ private void InitializeComponent() this.kpbExtractingProgress.Name = "kpbExtractingProgress"; this.kpbExtractingProgress.Size = new System.Drawing.Size(722, 30); this.kpbExtractingProgress.TabIndex = 4; + this.kpbExtractingProgress.Text = "0%"; + this.kpbExtractingProgress.UseValueAsText = true; + this.kpbExtractingProgress.Values.Text = "0%"; // // bgwLoadWorker // diff --git a/Source/Krypton Toolkit/ZipExtractor/ZipExtractor.csproj b/Source/Krypton Toolkit/ZipExtractor/ZipExtractor.csproj index 8e6ba02d7..1bc7ac528 100644 --- a/Source/Krypton Toolkit/ZipExtractor/ZipExtractor.csproj +++ b/Source/Krypton Toolkit/ZipExtractor/ZipExtractor.csproj @@ -21,7 +21,7 @@ - + @@ -92,7 +92,11 @@ ..\..\..\Bin\$(configuration)\ZipExtractor\ZipExtractor.xml ..\..\..\Bin\$(configuration)\ZipExtractor\ False + Resources\ZipExtractor.ico + + +