From cfb359f38dcceb9bfe72115d52a14277ee68cd7b Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sat, 4 Jan 2025 19:10:58 -0500 Subject: [PATCH 01/11] Changed use of sp_addrolemember sproc to ALTER ROLE SQL --- nvQuickSite/Controllers/DatabaseController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nvQuickSite/Controllers/DatabaseController.cs b/nvQuickSite/Controllers/DatabaseController.cs index 128ffbb9..c50693d6 100644 --- a/nvQuickSite/Controllers/DatabaseController.cs +++ b/nvQuickSite/Controllers/DatabaseController.cs @@ -208,7 +208,7 @@ internal void SetDatabasePermissions() SqlCommand grantLogin = new SqlCommand($"sp_grantlogin '{appPoolNameFull}'", myConn); SqlCommand useDb = new SqlCommand($"USE [{this.dbName}]", myConn); SqlCommand grantDbAccess = new SqlCommand($"sp_grantdbaccess '{appPoolNameFull}', '{appPoolName}'", myConn); - SqlCommand addRoleMember = new SqlCommand($"sp_addrolemember 'db_owner', '{appPoolName}'", myConn); + SqlCommand addRoleMember = new SqlCommand($"ALTER ROLE [db_owner] ADD MEMBER [{appPoolName}] ", myConn); try { From a92209824c91ed5d8c1d0698df9c3c91f9fa6950 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sat, 4 Jan 2025 19:33:41 -0500 Subject: [PATCH 02/11] Updated db drop to place in SINGLE_USER mode with rollback --- nvQuickSite/Controllers/DatabaseController.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nvQuickSite/Controllers/DatabaseController.cs b/nvQuickSite/Controllers/DatabaseController.cs index 128ffbb9..76682d01 100644 --- a/nvQuickSite/Controllers/DatabaseController.cs +++ b/nvQuickSite/Controllers/DatabaseController.cs @@ -91,7 +91,10 @@ public void DropDatabase() { string useMaster = @"USE master"; string dropDatabase = $@"IF EXISTS(SELECT name FROM sys.databases WHERE name = '{this.dbName}') " + - $"DROP DATABASE [{this.dbName}]"; + $"BEGIN " + + $"ALTER DATABASE [{this.dbName}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; " + + $"DROP DATABASE [{this.dbName}]; " + + $"END"; SqlCommand useMasterCommand = new SqlCommand(useMaster, myConn); SqlCommand dropDatabaseCommand = new SqlCommand(dropDatabase, myConn); From 97d2bd07010c021389d462fc6963c3fcf9fa08fd Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sat, 4 Jan 2025 19:58:59 -0500 Subject: [PATCH 03/11] Changed System.Data.SqlClient to the newer Microsoft.Data.SqlClient namespace --- nvQuickSite/Controllers/DatabaseController.cs | 11 +++++++---- nvQuickSite/Properties/Resources.Designer.cs | 2 +- nvQuickSite/Properties/Settings.Designer.cs | 2 +- nvQuickSite/app.config | 18 +++++++++--------- nvQuickSite/nvQuickSite.csproj | 5 ++++- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/nvQuickSite/Controllers/DatabaseController.cs b/nvQuickSite/Controllers/DatabaseController.cs index b0c79a43..29cd2ef5 100644 --- a/nvQuickSite/Controllers/DatabaseController.cs +++ b/nvQuickSite/Controllers/DatabaseController.cs @@ -19,8 +19,8 @@ namespace nvQuickSite.Controllers { using System; using System.Data; - using System.Data.SqlClient; + using Microsoft.Data.SqlClient; using nvQuickSite.Controllers.Exceptions; using Serilog; @@ -77,6 +77,7 @@ public void DropDatabase() { Log.Logger.Information("Dropping database {dbName}", this.dbName); string myDBServerName = this.dbServerName; + string connectionStringTrustServerCertificate = "TrustServerCertificate=True;"; string connectionStringAuthSection = string.Empty; if (this.usesWindowsAuthentication) { @@ -87,7 +88,7 @@ public void DropDatabase() connectionStringAuthSection = "User ID=" + this.dbUserName + ";Password=" + this.dbPassword + ";"; } - using (SqlConnection myConn = new SqlConnection("Server=" + myDBServerName + "; Initial Catalog=master;" + connectionStringAuthSection)) + using (SqlConnection myConn = new SqlConnection($"Server={myDBServerName}; Initial Catalog=master; {connectionStringTrustServerCertificate} {connectionStringAuthSection}")) { string useMaster = @"USE master"; string dropDatabase = $@"IF EXISTS(SELECT name FROM sys.databases WHERE name = '{this.dbName}') " + @@ -131,6 +132,7 @@ public void DropDatabase() public void CreateDatabase() { Log.Logger.Information("Creating database {dbName}", this.dbName); + string connectionStringTrustServerCertificate = "TrustServerCertificate=True;"; string connectionStringAuthSection = string.Empty; string connectionTimeout = "Connection Timeout=5;"; if (this.usesWindowsAuthentication) @@ -142,7 +144,7 @@ public void CreateDatabase() connectionStringAuthSection = $"User ID={this.dbUserName};Password={this.dbPassword};"; } - using (SqlConnection myConn = new SqlConnection($"Server={this.dbServerName}; Initial Catalog=master;{connectionStringAuthSection}{connectionTimeout}")) + using (SqlConnection myConn = new SqlConnection($"Server={this.dbServerName}; Initial Catalog=master; {connectionStringTrustServerCertificate} {connectionStringAuthSection} {connectionTimeout}")) { string str = $"CREATE DATABASE [{this.dbName}] ON PRIMARY " + $"(NAME = [{this.dbName}_Data], " + @@ -186,6 +188,7 @@ public void CreateDatabase() internal void SetDatabasePermissions() { Log.Logger.Information("Setting permissions on database {dbName}", this.dbName); + string connectionStringTrustServerCertificate = "TrustServerCertificate=True;"; string connectionStringAuthSection = string.Empty; if (this.usesWindowsAuthentication) { @@ -196,7 +199,7 @@ internal void SetDatabasePermissions() connectionStringAuthSection = $"User ID={this.dbUserName};Password={this.dbPassword};"; } - using (SqlConnection myConn = new SqlConnection($"Server={this.dbServerName}; Initial Catalog=master;{connectionStringAuthSection}")) + using (SqlConnection myConn = new SqlConnection($"Server={this.dbServerName}; Initial Catalog=master; {connectionStringTrustServerCertificate} {connectionStringAuthSection}")) { var appPoolNameFull = @"IIS APPPOOL\DefaultAppPool"; var appPoolName = "DefaultAppPool"; diff --git a/nvQuickSite/Properties/Resources.Designer.cs b/nvQuickSite/Properties/Resources.Designer.cs index 2f9eebb7..534aa1e8 100644 --- a/nvQuickSite/Properties/Resources.Designer.cs +++ b/nvQuickSite/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace nvQuickSite.Properties { // 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", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/nvQuickSite/Properties/Settings.Designer.cs b/nvQuickSite/Properties/Settings.Designer.cs index b7cd9d59..cb6ac4f0 100644 --- a/nvQuickSite/Properties/Settings.Designer.cs +++ b/nvQuickSite/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace nvQuickSite.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/nvQuickSite/app.config b/nvQuickSite/app.config index 7fa89de7..1a67a53a 100644 --- a/nvQuickSite/app.config +++ b/nvQuickSite/app.config @@ -1,17 +1,17 @@ - + -
+
- + - + MySite @@ -47,7 +47,7 @@ True - + False @@ -56,16 +56,16 @@ False - + - + - - + + diff --git a/nvQuickSite/nvQuickSite.csproj b/nvQuickSite/nvQuickSite.csproj index ec743fbc..6d5c2a2a 100644 --- a/nvQuickSite/nvQuickSite.csproj +++ b/nvQuickSite/nvQuickSite.csproj @@ -10,7 +10,7 @@ Properties nvQuickSite nvQuickSite - v4.5 + v4.7.2 512 false @@ -278,6 +278,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all + + 5.2.2 + 13.0.2 From fc78435b80cb66553b554ec4370cf7eeca39c16f Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sat, 4 Jan 2025 22:51:50 -0500 Subject: [PATCH 04/11] Replaced DotNetZip and Ionic.Zip with System.IO.Compression.ZipFile --- .../Controllers/PackageExtractorController.cs | 111 +++++++++ nvQuickSite/Properties/AssemblyInfo.cs | 4 +- nvQuickSite/Start.cs | 49 ++-- nvQuickSite/data/latestVersion.json | 2 +- nvQuickSite/nvQuickSite.csproj | 8 +- nvQuickSiteWixInstaller/Product.wxs | 212 ++++++++++++++---- 6 files changed, 305 insertions(+), 81 deletions(-) create mode 100644 nvQuickSite/Controllers/PackageExtractorController.cs diff --git a/nvQuickSite/Controllers/PackageExtractorController.cs b/nvQuickSite/Controllers/PackageExtractorController.cs new file mode 100644 index 00000000..4e49246f --- /dev/null +++ b/nvQuickSite/Controllers/PackageExtractorController.cs @@ -0,0 +1,111 @@ +// Copyright (c) 2016-2020 nvisionative, Inc. +// +// This file is part of nvQuickSite. +// +// nvQuickSite is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// nvQuickSite is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with nvQuickSite. If not, see . + +using System; +using System.IO; +using System.IO.Compression; +using System.Linq; + +using nvQuickSite.Exceptions; +using Serilog; + +/// +/// Controller for extracting a package. +/// +public class PackageExtractorController +{ + /// + /// Action to be executed when the progress is updated. + /// + public event Action ProgressUpdated; + + /// + /// Action to be executed when the progress value is updated. + /// + public event Action ProgressValueUpdated; + + /// + /// Extracts a package. + /// + /// Open Path. + /// Save Path. + /// Read and Extract Exception. + public void ExtractPackage(string openPath, string savePath) + { + try + { + Log.Logger.Information("Extracting package"); + + using (var zip = ZipFile.OpenRead(openPath)) + { + long totalSize = zip.Entries.Sum(entry => entry.Length); + + long progressSize = 0; + + foreach (var entry in zip.Entries) + { + var entryPath = Path.Combine(savePath, entry.FullName); + + if (string.IsNullOrEmpty(entry.Name)) // Directory + { + Directory.CreateDirectory(entryPath); + } + else // File + { + var directoryPath = Path.GetDirectoryName(entryPath); + if (!Directory.Exists(directoryPath)) + { + Directory.CreateDirectory(directoryPath); + } + + this.ExtractEntryWithProgress(entry, entryPath, ref progressSize, totalSize); + } + } + } + + this.ProgressUpdated?.Invoke("Congratulations! Your new site is now ready to visit!"); + } + catch (Exception ex) + { + var message = "Error attempting to read and extract the package"; + Log.Error(ex, message); + throw new ReadAndExtractException(message, ex) { Source = "Read And Extract Package" }; + } + + Log.Logger.Information("Extracted package from {openPath} to {savePath}", openPath, savePath); + } + + private void ExtractEntryWithProgress(ZipArchiveEntry entry, string destinationPath, ref long progressSize, long totalSize) + { + this.ProgressUpdated?.Invoke("Copying: " + entry.FullName); + + using (var inputStream = entry.Open()) + using (var outputStream = new FileStream(destinationPath, FileMode.Create, FileAccess.Write)) + { + var buffer = new byte[81920]; + int bytesRead; + while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0) + { + outputStream.Write(buffer, 0, bytesRead); + progressSize += bytesRead; + + int progressPercentage = (int)((progressSize * 100) / totalSize); + this.ProgressValueUpdated?.Invoke(progressPercentage); + } + } + } +} diff --git a/nvQuickSite/Properties/AssemblyInfo.cs b/nvQuickSite/Properties/AssemblyInfo.cs index 72a894d9..1e189cfb 100644 --- a/nvQuickSite/Properties/AssemblyInfo.cs +++ b/nvQuickSite/Properties/AssemblyInfo.cs @@ -49,6 +49,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.3.3")] -[assembly: AssemblyFileVersion("2.3.3")] +[assembly: AssemblyVersion("2.4.0")] +[assembly: AssemblyFileVersion("2.4.0")] [assembly: NeutralResourcesLanguage("en")] diff --git a/nvQuickSite/Start.cs b/nvQuickSite/Start.cs index 2087d0ef..bada4d86 100644 --- a/nvQuickSite/Start.cs +++ b/nvQuickSite/Start.cs @@ -24,12 +24,12 @@ namespace nvQuickSite using System.Diagnostics; using System.Drawing; using System.IO; + using System.IO.Compression; using System.Linq; using System.Net; using System.Security.Cryptography.X509Certificates; using System.Windows.Forms; - using Ionic.Zip; using MetroFramework.Controls; using nvQuickSite.Controllers; using nvQuickSite.Controllers.Exceptions; @@ -663,47 +663,30 @@ private void btnDatabaseInfoNext_Click(object sender, EventArgs e) private void ReadAndExtract(string openPath, string savePath) { + var extractor = new PackageExtractorController(); + extractor.ProgressUpdated += this.UpdateProgressStatus; + extractor.ProgressValueUpdated += this.UpdateProgressBar; + try { - Log.Logger.Information("Extracting package"); - var myZip = ZipFile.Read(openPath); - foreach (var entry in myZip) - { - this.totalSize += entry.UncompressedSize; - } - - this.progressBar.Maximum = (int)this.totalSize; - myZip.ExtractProgress += new EventHandler(this.myZip_ExtractProgress); - myZip.ExtractAll(savePath, ExtractExistingFileAction.OverwriteSilently); - this.lblProgressStatus.Text = "Congratulations! Your new site is now ready to visit!"; + extractor.ExtractPackage(openPath, savePath); } - catch (Exception ex) + catch (ReadAndExtractException ex) { - var message = "Error attempting to read and extract the package"; - Log.Error(ex, message); - throw new ReadAndExtractException(message, ex) { Source = "Read And Extract Package" }; + MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } - - Log.Logger.Information("Extracted package from {openPath} to {savePath}", openPath, savePath); } - private void myZip_ExtractProgress(object sender, ExtractProgressEventArgs e) + private void UpdateProgressStatus(string status) { - System.Windows.Forms.Application.DoEvents(); - if (this.total != e.TotalBytesToTransfer) - { - this.sum += this.total - this.lastVal + e.BytesTransferred; - this.total = e.TotalBytesToTransfer; - this.lblProgressStatus.Text = "Copying: " + e.CurrentEntry.FileName; - } - else - { - this.sum += e.BytesTransferred - this.lastVal; - } - - this.lastVal = e.BytesTransferred; + this.lblProgressStatus.Text = status; + Application.DoEvents(); + } - this.progressBar.Value = (int)this.sum; + private void UpdateProgressBar(int value) + { + this.progressBar.Value = value; + Application.DoEvents(); } private void btnVisitSite_Click(object sender, EventArgs e) diff --git a/nvQuickSite/data/latestVersion.json b/nvQuickSite/data/latestVersion.json index 49a7f5e3..ef5dde50 100644 --- a/nvQuickSite/data/latestVersion.json +++ b/nvQuickSite/data/latestVersion.json @@ -1,3 +1,3 @@ { - "latestVersion": "2.3.3" + "latestVersion": "2.4.0" } \ No newline at end of file diff --git a/nvQuickSite/nvQuickSite.csproj b/nvQuickSite/nvQuickSite.csproj index 6d5c2a2a..18f482a1 100644 --- a/nvQuickSite/nvQuickSite.csproj +++ b/nvQuickSite/nvQuickSite.csproj @@ -99,6 +99,7 @@ + @@ -122,6 +123,7 @@ + @@ -267,9 +269,6 @@ 2.0.2 - - 1.13.3 - 1.2.0.3 @@ -307,6 +306,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all + + 4.3.0 + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + Debug + + + ICE69 + + + + nvQuickSite + {3d661bad-45eb-4524-9650-78805cd31682} + True + True + Binaries;Content;Satellites + INSTALLFOLDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From dfcb44b161216b5ea6c92560b2e0ddb01c6fca41 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 5 Jan 2025 02:25:27 -0500 Subject: [PATCH 07/11] working wix5 --- nvQuickSiteWixInstaller/Product.wxs | 205 +----------------- .../nvQuickSiteWixInstaller.wixproj | 1 + 2 files changed, 8 insertions(+), 198 deletions(-) diff --git a/nvQuickSiteWixInstaller/Product.wxs b/nvQuickSiteWixInstaller/Product.wxs index ed0d1895..644493a2 100644 --- a/nvQuickSiteWixInstaller/Product.wxs +++ b/nvQuickSiteWixInstaller/Product.wxs @@ -11,213 +11,22 @@ - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -226,7 +35,7 @@ - + diff --git a/nvQuickSiteWixInstaller/nvQuickSiteWixInstaller.wixproj b/nvQuickSiteWixInstaller/nvQuickSiteWixInstaller.wixproj index a6761d8c..935ac29a 100644 --- a/nvQuickSiteWixInstaller/nvQuickSiteWixInstaller.wixproj +++ b/nvQuickSiteWixInstaller/nvQuickSiteWixInstaller.wixproj @@ -17,6 +17,7 @@ + From e7f1d33209b1653fd232dc10b744e015ac46381c Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 5 Jan 2025 02:46:53 -0500 Subject: [PATCH 08/11] Fixed an issue where the app would not start after install --- nvQuickSiteWixInstaller/Product.wxs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nvQuickSiteWixInstaller/Product.wxs b/nvQuickSiteWixInstaller/Product.wxs index 644493a2..fae9adc9 100644 --- a/nvQuickSiteWixInstaller/Product.wxs +++ b/nvQuickSiteWixInstaller/Product.wxs @@ -13,16 +13,20 @@ - + - + + + + + + - @@ -35,7 +39,7 @@ - + From 4c67090f9868b186a423ccacbbe10678e4638ff7 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 5 Jan 2025 18:26:12 -0500 Subject: [PATCH 09/11] Update minimum installer requirements for .NET Framework 4.7.2+ --- nvQuickSiteWixInstaller/Product.wxs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nvQuickSiteWixInstaller/Product.wxs b/nvQuickSiteWixInstaller/Product.wxs index fae9adc9..40ed47e3 100644 --- a/nvQuickSiteWixInstaller/Product.wxs +++ b/nvQuickSiteWixInstaller/Product.wxs @@ -8,8 +8,8 @@ - - + + From f8433a93c6e619aef056276d166f67b22fc49a66 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 5 Jan 2025 20:39:56 -0500 Subject: [PATCH 10/11] Add new dialog features for Get Help and Report Issue when exceptions are thrown --- nvQuickSite/Controllers/DialogController.cs | 5 +- .../Controls/Dialogs/MsgBoxOk.Designer.cs | 56 +++++++++-- nvQuickSite/Controls/Dialogs/MsgBoxOk.cs | 14 ++- .../Sites/DeleteSiteProgress.Designer.cs | 97 +++++++++++-------- .../Controls/Sites/DeleteSiteProgress.cs | 6 +- nvQuickSite/Main.cs | 2 +- nvQuickSite/Start.cs | 11 ++- 7 files changed, 128 insertions(+), 63 deletions(-) diff --git a/nvQuickSite/Controllers/DialogController.cs b/nvQuickSite/Controllers/DialogController.cs index 3ebf8adf..bfac482a 100644 --- a/nvQuickSite/Controllers/DialogController.cs +++ b/nvQuickSite/Controllers/DialogController.cs @@ -61,8 +61,9 @@ internal enum DialogButtons /// Icon for the bitmap image (e.g., SystemIcons.Error, SystemIcons.Warning, SystemIcons.Information). /// Type of buttons to use for the custom message box. /// User preference for not warning again with a dialog (i.e., no longer show the dialog). + /// A value indicating whether the dialog is for an exception. /// DialogResult. - internal static DialogResult ShowMessage(string title, string message, Icon icon, DialogButtons dialogButtons, bool doNotWarnAgain = false) + internal static DialogResult ShowMessage(string title, string message, Icon icon, DialogButtons dialogButtons, bool exception = false, bool doNotWarnAgain = false) { var dialogTitle = title; var dialogMessage = message; @@ -71,7 +72,7 @@ internal static DialogResult ShowMessage(string title, string message, Icon icon switch (dialogButtons) { case DialogButtons.OK: - using (var messageBox = new MsgBoxOk(dialogTitle, dialogMessage, dialogIcon)) + using (var messageBox = new MsgBoxOk(dialogTitle, dialogMessage, dialogIcon, exception)) { result = messageBox.ShowDialog(); } diff --git a/nvQuickSite/Controls/Dialogs/MsgBoxOk.Designer.cs b/nvQuickSite/Controls/Dialogs/MsgBoxOk.Designer.cs index 259d2aff..7ec9e31a 100644 --- a/nvQuickSite/Controls/Dialogs/MsgBoxOk.Designer.cs +++ b/nvQuickSite/Controls/Dialogs/MsgBoxOk.Designer.cs @@ -32,6 +32,8 @@ private void InitializeComponent() this.btnOk = new MetroFramework.Controls.MetroButton(); this.dialogIcon = new System.Windows.Forms.PictureBox(); this.lblMessage = new System.Windows.Forms.Label(); + this.btnGetHelp = new MetroFramework.Controls.MetroButton(); + this.linkLabelReportIssue = new System.Windows.Forms.LinkLabel(); ((System.ComponentModel.ISupportInitialize)(this.dialogIcon)).BeginInit(); this.SuspendLayout(); // @@ -39,7 +41,8 @@ private void InitializeComponent() // this.lblTitle.AutoSize = true; this.lblTitle.FontWeight = MetroFramework.MetroLabelWeight.Bold; - this.lblTitle.Location = new System.Drawing.Point(77, 23); + this.lblTitle.Location = new System.Drawing.Point(116, 35); + this.lblTitle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblTitle.Name = "lblTitle"; this.lblTitle.Size = new System.Drawing.Size(67, 19); this.lblTitle.TabIndex = 0; @@ -49,9 +52,10 @@ private void InitializeComponent() // this.btnOk.Cursor = System.Windows.Forms.Cursors.Hand; this.btnOk.DialogResult = System.Windows.Forms.DialogResult.No; - this.btnOk.Location = new System.Drawing.Point(429, 129); + this.btnOk.Location = new System.Drawing.Point(644, 198); + this.btnOk.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); + this.btnOk.Size = new System.Drawing.Size(112, 35); this.btnOk.TabIndex = 2; this.btnOk.Text = "OK"; // @@ -61,34 +65,66 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dialogIcon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; - this.dialogIcon.Location = new System.Drawing.Point(4, 11); + this.dialogIcon.Location = new System.Drawing.Point(6, 17); + this.dialogIcon.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.dialogIcon.Name = "dialogIcon"; - this.dialogIcon.Size = new System.Drawing.Size(77, 77); + this.dialogIcon.Size = new System.Drawing.Size(116, 118); this.dialogIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.dialogIcon.TabIndex = 4; this.dialogIcon.TabStop = false; // // lblMessage // - this.lblMessage.Location = new System.Drawing.Point(77, 43); + this.lblMessage.Location = new System.Drawing.Point(116, 66); + this.lblMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblMessage.Name = "lblMessage"; - this.lblMessage.Size = new System.Drawing.Size(417, 71); + this.lblMessage.Size = new System.Drawing.Size(626, 109); this.lblMessage.TabIndex = 0; this.lblMessage.Text = "Message"; // + // btnGetHelp + // + this.btnGetHelp.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnGetHelp.Highlight = true; + this.btnGetHelp.Location = new System.Drawing.Point(524, 198); + this.btnGetHelp.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.btnGetHelp.Name = "btnGetHelp"; + this.btnGetHelp.Size = new System.Drawing.Size(112, 35); + this.btnGetHelp.Style = MetroFramework.MetroColorStyle.Orange; + this.btnGetHelp.TabIndex = 5; + this.btnGetHelp.Text = "Get Help"; + // + // linkLabelReportIssue + // + this.linkLabelReportIssue.AutoSize = true; + this.linkLabelReportIssue.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.linkLabelReportIssue.Location = new System.Drawing.Point(416, 211); + this.linkLabelReportIssue.Name = "linkLabelReportIssue"; + this.linkLabelReportIssue.Size = new System.Drawing.Size(101, 20); + this.linkLabelReportIssue.TabIndex = 6; + this.linkLabelReportIssue.TabStop = true; + this.linkLabelReportIssue.Text = "Report Issue"; + this.linkLabelReportIssue.TextAlign = System.Drawing.ContentAlignment.BottomRight; + this.linkLabelReportIssue.Visible = false; + this.linkLabelReportIssue.VisitedLinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0))))); + // // MsgBoxOk // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BorderStyle = MetroFramework.Drawing.MetroBorderStyle.FixedSingle; - this.ClientSize = new System.Drawing.Size(527, 170); + this.ClientSize = new System.Drawing.Size(790, 262); + this.Controls.Add(this.linkLabelReportIssue); + this.Controls.Add(this.btnGetHelp); this.Controls.Add(this.lblTitle); this.Controls.Add(this.lblMessage); this.Controls.Add(this.dialogIcon); this.Controls.Add(this.btnOk); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "MsgBoxOk"; + this.Padding = new System.Windows.Forms.Padding(30, 92, 30, 31); this.Resizable = false; ((System.ComponentModel.ISupportInitialize)(this.dialogIcon)).EndInit(); this.ResumeLayout(false); @@ -102,5 +138,7 @@ private void InitializeComponent() private MetroFramework.Controls.MetroButton btnOk; private System.Windows.Forms.PictureBox dialogIcon; private System.Windows.Forms.Label lblMessage; + private MetroFramework.Controls.MetroButton btnGetHelp; + private System.Windows.Forms.LinkLabel linkLabelReportIssue; } } \ No newline at end of file diff --git a/nvQuickSite/Controls/Dialogs/MsgBoxOk.cs b/nvQuickSite/Controls/Dialogs/MsgBoxOk.cs index c8a885b2..2240cc51 100644 --- a/nvQuickSite/Controls/Dialogs/MsgBoxOk.cs +++ b/nvQuickSite/Controls/Dialogs/MsgBoxOk.cs @@ -17,6 +17,7 @@ namespace nvQuickSite.Controls.Dialogs { + using System; using System.Drawing; using MetroFramework.Forms; @@ -32,12 +33,23 @@ public partial class MsgBoxOk : MetroForm /// The title to show in the dialog. /// The message to show in the dialog. /// The image to use as the dialog icon. - public MsgBoxOk(string dialogTitle, string dialogMessage, Image dialogIconImage) + /// Whether or not the dialog is an exception. + public MsgBoxOk(string dialogTitle, string dialogMessage, Image dialogIconImage, bool exception = false) { this.InitializeComponent(); this.lblTitle.Text = dialogTitle; this.lblMessage.Text = dialogMessage; this.dialogIcon.Image = dialogIconImage; + this.btnGetHelp.Visible = exception; + this.btnGetHelp.Click += (sender, e) => + { + this.linkLabelReportIssue.Visible = true; + System.Diagnostics.Process.Start($"https://github.com/nvisionative/nvQuickSite/issues?q=is%3Aissue+{dialogTitle}+{dialogMessage}"); + }; + this.linkLabelReportIssue.Click += (sender, e) => + { + System.Diagnostics.Process.Start($"https://github.com/nvisionative/nvQuickSite/issues/new?title=[In-App%20Issue]{dialogTitle}&body={dialogMessage}"); + }; } } } diff --git a/nvQuickSite/Controls/Sites/DeleteSiteProgress.Designer.cs b/nvQuickSite/Controls/Sites/DeleteSiteProgress.Designer.cs index 641a3b7b..e85c4028 100644 --- a/nvQuickSite/Controls/Sites/DeleteSiteProgress.Designer.cs +++ b/nvQuickSite/Controls/Sites/DeleteSiteProgress.Designer.cs @@ -54,7 +54,8 @@ private void InitializeComponent() this.lblMessage.Dock = System.Windows.Forms.DockStyle.Top; this.lblMessage.FontSize = MetroFramework.MetroLabelSize.Tall; this.lblMessage.FontWeight = MetroFramework.MetroLabelWeight.Bold; - this.lblMessage.Location = new System.Drawing.Point(20, 30); + this.lblMessage.Location = new System.Drawing.Point(30, 46); + this.lblMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lblMessage.Name = "lblMessage"; this.lblMessage.Size = new System.Drawing.Size(104, 25); this.lblMessage.Style = MetroFramework.MetroColorStyle.Blue; @@ -66,9 +67,10 @@ private void InitializeComponent() // this.progressTotal.Dock = System.Windows.Forms.DockStyle.Bottom; this.progressTotal.HideProgressText = false; - this.progressTotal.Location = new System.Drawing.Point(20, 279); + this.progressTotal.Location = new System.Drawing.Point(30, 429); + this.progressTotal.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressTotal.Name = "progressTotal"; - this.progressTotal.Size = new System.Drawing.Size(530, 23); + this.progressTotal.Size = new System.Drawing.Size(795, 35); this.progressTotal.Style = MetroFramework.MetroColorStyle.Blue; this.progressTotal.TabIndex = 1; this.progressTotal.Theme = MetroFramework.MetroThemeStyle.Light; @@ -93,7 +95,8 @@ private void InitializeComponent() this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); this.tableLayoutPanel1.Controls.Add(this.progressStopAppPool, 1, 1); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(20, 55); + this.tableLayoutPanel1.Location = new System.Drawing.Point(30, 71); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 7; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); @@ -103,25 +106,26 @@ 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()); - this.tableLayoutPanel1.Size = new System.Drawing.Size(530, 224); + this.tableLayoutPanel1.Size = new System.Drawing.Size(795, 358); this.tableLayoutPanel1.TabIndex = 2; // // progressDeleteAppPool // this.progressDeleteAppPool.Dock = System.Windows.Forms.DockStyle.Top; - this.progressDeleteAppPool.Location = new System.Drawing.Point(116, 177); + this.progressDeleteAppPool.Location = new System.Drawing.Point(171, 275); + this.progressDeleteAppPool.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressDeleteAppPool.Name = "progressDeleteAppPool"; - this.progressDeleteAppPool.Size = new System.Drawing.Size(418, 23); + this.progressDeleteAppPool.Size = new System.Drawing.Size(627, 35); this.progressDeleteAppPool.TabIndex = 13; // // label7 // this.label7.AutoSize = true; this.label7.Dock = System.Windows.Forms.DockStyle.Top; - this.label7.Location = new System.Drawing.Point(3, 182); - this.label7.Margin = new System.Windows.Forms.Padding(3, 8, 3, 0); + this.label7.Location = new System.Drawing.Point(4, 282); + this.label7.Margin = new System.Windows.Forms.Padding(4, 12, 4, 0); this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(107, 13); + this.label7.Size = new System.Drawing.Size(159, 20); this.label7.TabIndex = 12; this.label7.Text = "Deleting AppPool"; this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -129,19 +133,20 @@ private void InitializeComponent() // progressDeletingSite // this.progressDeletingSite.Dock = System.Windows.Forms.DockStyle.Top; - this.progressDeletingSite.Location = new System.Drawing.Point(116, 148); + this.progressDeletingSite.Location = new System.Drawing.Point(171, 230); + this.progressDeletingSite.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressDeletingSite.Name = "progressDeletingSite"; - this.progressDeletingSite.Size = new System.Drawing.Size(418, 23); + this.progressDeletingSite.Size = new System.Drawing.Size(627, 35); this.progressDeletingSite.TabIndex = 11; // // label6 // this.label6.AutoSize = true; this.label6.Dock = System.Windows.Forms.DockStyle.Top; - this.label6.Location = new System.Drawing.Point(3, 153); - this.label6.Margin = new System.Windows.Forms.Padding(3, 8, 3, 0); + this.label6.Location = new System.Drawing.Point(4, 237); + this.label6.Margin = new System.Windows.Forms.Padding(4, 12, 4, 0); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(107, 13); + this.label6.Size = new System.Drawing.Size(159, 20); this.label6.TabIndex = 10; this.label6.Text = "Deleting Site"; this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -149,19 +154,20 @@ private void InitializeComponent() // progressRemoveHostEntry // this.progressRemoveHostEntry.Dock = System.Windows.Forms.DockStyle.Top; - this.progressRemoveHostEntry.Location = new System.Drawing.Point(116, 119); + this.progressRemoveHostEntry.Location = new System.Drawing.Point(171, 185); + this.progressRemoveHostEntry.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressRemoveHostEntry.Name = "progressRemoveHostEntry"; - this.progressRemoveHostEntry.Size = new System.Drawing.Size(418, 23); + this.progressRemoveHostEntry.Size = new System.Drawing.Size(627, 35); this.progressRemoveHostEntry.TabIndex = 9; // // label5 // this.label5.AutoSize = true; this.label5.Dock = System.Windows.Forms.DockStyle.Top; - this.label5.Location = new System.Drawing.Point(3, 124); - this.label5.Margin = new System.Windows.Forms.Padding(3, 8, 3, 0); + this.label5.Location = new System.Drawing.Point(4, 192); + this.label5.Margin = new System.Windows.Forms.Padding(4, 12, 4, 0); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(107, 13); + this.label5.Size = new System.Drawing.Size(159, 20); this.label5.TabIndex = 8; this.label5.Text = "Removing Host Entry"; this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -169,19 +175,20 @@ private void InitializeComponent() // progressDeleteFiles // this.progressDeleteFiles.Dock = System.Windows.Forms.DockStyle.Top; - this.progressDeleteFiles.Location = new System.Drawing.Point(116, 90); + this.progressDeleteFiles.Location = new System.Drawing.Point(171, 140); + this.progressDeleteFiles.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressDeleteFiles.Name = "progressDeleteFiles"; - this.progressDeleteFiles.Size = new System.Drawing.Size(418, 23); + this.progressDeleteFiles.Size = new System.Drawing.Size(627, 35); this.progressDeleteFiles.TabIndex = 7; // // label4 // this.label4.AutoSize = true; this.label4.Dock = System.Windows.Forms.DockStyle.Top; - this.label4.Location = new System.Drawing.Point(3, 95); - this.label4.Margin = new System.Windows.Forms.Padding(3, 8, 3, 0); + this.label4.Location = new System.Drawing.Point(4, 147); + this.label4.Margin = new System.Windows.Forms.Padding(4, 12, 4, 0); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(107, 13); + this.label4.Size = new System.Drawing.Size(159, 20); this.label4.TabIndex = 6; this.label4.Text = "Deleting Files"; this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -189,19 +196,20 @@ private void InitializeComponent() // progressDeleteDatabae // this.progressDeleteDatabae.Dock = System.Windows.Forms.DockStyle.Top; - this.progressDeleteDatabae.Location = new System.Drawing.Point(116, 61); + this.progressDeleteDatabae.Location = new System.Drawing.Point(171, 95); + this.progressDeleteDatabae.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressDeleteDatabae.Name = "progressDeleteDatabae"; - this.progressDeleteDatabae.Size = new System.Drawing.Size(418, 23); + this.progressDeleteDatabae.Size = new System.Drawing.Size(627, 35); this.progressDeleteDatabae.TabIndex = 5; // // label3 // this.label3.AutoSize = true; this.label3.Dock = System.Windows.Forms.DockStyle.Top; - this.label3.Location = new System.Drawing.Point(3, 66); - this.label3.Margin = new System.Windows.Forms.Padding(3, 8, 3, 0); + this.label3.Location = new System.Drawing.Point(4, 102); + this.label3.Margin = new System.Windows.Forms.Padding(4, 12, 4, 0); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(107, 13); + this.label3.Size = new System.Drawing.Size(159, 20); this.label3.TabIndex = 4; this.label3.Text = "Deleting Database"; this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -209,19 +217,20 @@ private void InitializeComponent() // progressStopSite // this.progressStopSite.Dock = System.Windows.Forms.DockStyle.Top; - this.progressStopSite.Location = new System.Drawing.Point(116, 3); + this.progressStopSite.Location = new System.Drawing.Point(171, 5); + this.progressStopSite.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressStopSite.Name = "progressStopSite"; - this.progressStopSite.Size = new System.Drawing.Size(418, 23); + this.progressStopSite.Size = new System.Drawing.Size(627, 35); this.progressStopSite.TabIndex = 3; // // label2 // this.label2.AutoSize = true; this.label2.Dock = System.Windows.Forms.DockStyle.Top; - this.label2.Location = new System.Drawing.Point(3, 8); - this.label2.Margin = new System.Windows.Forms.Padding(3, 8, 3, 0); + this.label2.Location = new System.Drawing.Point(4, 12); + this.label2.Margin = new System.Windows.Forms.Padding(4, 12, 4, 0); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(107, 13); + this.label2.Size = new System.Drawing.Size(159, 20); this.label2.TabIndex = 2; this.label2.Text = "Stopping Site"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -230,10 +239,10 @@ private void InitializeComponent() // this.label1.AutoSize = true; this.label1.Dock = System.Windows.Forms.DockStyle.Top; - this.label1.Location = new System.Drawing.Point(3, 37); - this.label1.Margin = new System.Windows.Forms.Padding(3, 8, 3, 0); + this.label1.Location = new System.Drawing.Point(4, 57); + this.label1.Margin = new System.Windows.Forms.Padding(4, 12, 4, 0); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(107, 13); + this.label1.Size = new System.Drawing.Size(159, 20); this.label1.TabIndex = 0; this.label1.Text = "Stopping AppPool"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -241,25 +250,27 @@ private void InitializeComponent() // progressStopAppPool // this.progressStopAppPool.Dock = System.Windows.Forms.DockStyle.Top; - this.progressStopAppPool.Location = new System.Drawing.Point(116, 32); + this.progressStopAppPool.Location = new System.Drawing.Point(171, 50); + this.progressStopAppPool.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.progressStopAppPool.Name = "progressStopAppPool"; - this.progressStopAppPool.Size = new System.Drawing.Size(418, 23); + this.progressStopAppPool.Size = new System.Drawing.Size(627, 35); this.progressStopAppPool.TabIndex = 1; // // DeleteSiteProgress // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BorderStyle = MetroFramework.Drawing.MetroBorderStyle.FixedSingle; - this.ClientSize = new System.Drawing.Size(570, 322); + this.ClientSize = new System.Drawing.Size(855, 495); this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.progressTotal); this.Controls.Add(this.lblMessage); this.DisplayHeader = false; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "DeleteSiteProgress"; - this.Padding = new System.Windows.Forms.Padding(20, 30, 20, 20); + this.Padding = new System.Windows.Forms.Padding(30, 46, 30, 31); this.Resizable = false; this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); diff --git a/nvQuickSite/Controls/Sites/DeleteSiteProgress.cs b/nvQuickSite/Controls/Sites/DeleteSiteProgress.cs index 33237623..6e655ac6 100644 --- a/nvQuickSite/Controls/Sites/DeleteSiteProgress.cs +++ b/nvQuickSite/Controls/Sites/DeleteSiteProgress.cs @@ -187,7 +187,8 @@ private async void DeleteSite() ex.Source, ex.Message, SystemIcons.Error, - DialogController.DialogButtons.OK); + DialogController.DialogButtons.OK, + true); } } @@ -233,7 +234,8 @@ private void Abort(string errorTitle, string errorDescription) errorTitle, errorDescription, SystemIcons.Error, - DialogController.DialogButtons.OK); + DialogController.DialogButtons.OK, + true); this.DialogResult = DialogResult.OK; this.Close(); diff --git a/nvQuickSite/Main.cs b/nvQuickSite/Main.cs index 303d9497..4f96a021 100644 --- a/nvQuickSite/Main.cs +++ b/nvQuickSite/Main.cs @@ -86,7 +86,7 @@ public Main(LoggingLevelSwitch loggingLevelSwitch) } catch (VersionControllerException ex) { - DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK); + DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK, true); } Start control = new Start(loggingLevelSwitch); diff --git a/nvQuickSite/Start.cs b/nvQuickSite/Start.cs index bada4d86..783fac97 100644 --- a/nvQuickSite/Start.cs +++ b/nvQuickSite/Start.cs @@ -477,6 +477,7 @@ private void btnSiteInfoNext_Click(object sender, EventArgs e) "The entered location does not exist. Do you wish to create it?", SystemIcons.Warning, DialogController.DialogButtons.YesNoIgnore, + false, Properties.Settings.Default.LocationDoNotWarnAgain); if (result == DialogResult.Yes) @@ -640,23 +641,23 @@ private void btnDatabaseInfoNext_Click(object sender, EventArgs e) } catch (SiteExistsException ex) { - DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Warning, DialogController.DialogButtons.OK); + DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Warning, DialogController.DialogButtons.OK, true); } catch (IISControllerException ex) { - DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK); + DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK, true); } catch (FileSystemControllerException ex) { - DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK); + DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK, true); } catch (DatabaseControllerException ex) { - DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK); + DialogController.ShowMessage(ex.Source, ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK, true); } catch (Exception ex) { - DialogController.ShowMessage("Database Info Next", ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK); + DialogController.ShowMessage("Database Info Next", ex.Message, SystemIcons.Error, DialogController.DialogButtons.OK, true); throw; } } From 1865f5bd42eb855bcafb01891db678948add1282 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 5 Jan 2025 20:46:20 -0500 Subject: [PATCH 11/11] Saved project --- nvQuickSite/nvQuickSite.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/nvQuickSite/nvQuickSite.csproj b/nvQuickSite/nvQuickSite.csproj index 18f482a1..81b7bc47 100644 --- a/nvQuickSite/nvQuickSite.csproj +++ b/nvQuickSite/nvQuickSite.csproj @@ -188,6 +188,7 @@ DeleteSiteProgress.cs + Designer ViewExistingSites.cs