miniSql

创建
zgc123@gmail.com authored at 11/19/2023 1:40:15 AM
6136600
Tree
0 Parent(s)
Summary: 25 changed files with 1244 additions and 0 deletions.
Added +56 -0
Added +46 -0
Added +48 -0
Added +45 -0
Added +147 -0
Added +40 -0
Added +49 -0
Added +48 -0
Added +38 -0
Added +66 -0
Added +27 -0
Added +64 -0
Added +33 -0
Added +61 -0
Added +47 -0
Added +40 -0
Added +38 -0
Added +52 -0
Added +78 -0
Added +44 -0
Added +38 -0
Added +38 -0
Added +25 -0
Added +51 -0
Added +25 -0
Added +56 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs
new file mode 100644
index 0000000..b6eac44
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs
@@ -0,0 +1,56 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The cancel task command.
+    /// </summary>
+    public class CancelTaskCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CancelTaskCommand" /> class.
+        /// </summary>
+        public CancelTaskCommand()
+            : base("&Cancel")
+        {
+            SmallImage = ImageResource.stop;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                var editor = HostWindow.ActiveChildForm as IPerformTask;
+                return editor != null && editor.IsBusy;
+            }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            if (!Enabled)
+            {
+                return;
+            }
+
+            var editor = HostWindow.ActiveChildForm as IPerformTask;
+            if (editor != null)
+            {
+                editor.CancelTask();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +46 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs
new file mode 100644
index 0000000..964a25e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs
@@ -0,0 +1,46 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The close active window command.
+    /// </summary>
+    public class CloseActiveWindowCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CloseActiveWindowCommand" /> class.
+        /// </summary>
+        public CloseActiveWindowCommand()
+            : base("&Close")
+        {
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var frm = HostWindow.ActiveChildForm;
+            if (frm != null)
+            {
+                frm.Close();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +48 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs
new file mode 100644
index 0000000..cbfa429
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs
@@ -0,0 +1,48 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The close all windows command.
+    /// </summary>
+    public class CloseAllWindowsCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CloseAllWindowsCommand" /> class.
+        /// </summary>
+        public CloseAllWindowsCommand()
+            : base("Close &All Windows")
+        {
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var forms = HostWindow.Instance.MdiChildren;
+            foreach (var frm in forms)
+            {
+                Application.DoEvents();
+                frm.Close();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +45 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs
new file mode 100644
index 0000000..bd5f90b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs
@@ -0,0 +1,45 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Data;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>The close database connection command.</summary>
+    public class CloseDatabaseConnectionCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="CloseDatabaseConnectionCommand"/> class.</summary>
+        public CloseDatabaseConnectionCommand()
+            : base("Close Current connection")
+        {
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                if (Settings.Connection == null ||
+                    (Settings.Connection.State == ConnectionState.Closed &&
+                    Settings.Connection.State == ConnectionState.Broken))
+                {
+                    return false;
+                }
+
+                return true;
+            }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            Settings.CloseConnection();
+        }
+    }
+}
\ No newline at end of file
Added +147 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs
new file mode 100644
index 0000000..e56b9b2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs
@@ -0,0 +1,147 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	<para>A basic implementation of the <see cref="ICommand"/> interface.</para>
+    /// 	<para>Represents a "command", typically a user action such as saving a file or executing a query.</para>
+    /// 	<para>Inheritors must implement the abstract method <see cref="Execute"/>.</para>
+    /// </summary>
+    public abstract class CommandBase : ICommand
+    {
+        /// <summary>
+        /// 	The host window.
+        /// </summary>
+        private IHostWindow _hostWindow;
+
+        /// <summary>
+        /// 	The command name.
+        /// </summary>
+        private string _name;
+
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref="CommandBase"/> class.
+        /// 	The default value for <see cref="Enabled"/> is true, and <see cref="ShortcutKeys"/> is Keys.None.
+        /// </summary>
+        /// <param name="name">
+        /// 	The name of the command.
+        /// </param>
+        protected CommandBase(string name)
+        {
+            _name = name;
+            ShortcutKeys = Keys.None;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether this <see cref = "ICommand" /> is enabled.
+        /// </summary>
+        /// <value><c>true</c> if enabled; otherwise, <c>false</c> (the default is true).</value>
+        public virtual bool Enabled
+        {
+            get { return true; }
+        }
+
+        public object Host { get; set; }
+
+        /// <summary>
+        /// 	The name of the command, used in menus and buttons.
+        /// </summary>
+        /// <value>The name of the command.</value>
+        public virtual string Name
+        {
+            get { return _name; }
+            protected set
+            {
+                if (_name == value)
+                {
+                    return;
+                }
+
+                _name = value;
+
+                // if the "host" of this command is a toolstring item, update its Text property.
+                var item = Host as ToolStripItem;
+                if (item != null)
+                {
+                    item.Text = _name;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 	A reference to the application services to allow access to the other components.
+        /// </summary>
+        /// <value>A reference to the <see cref = "IApplicationServices" /> instance.</value>
+        public IApplicationServices Services { get; set; }
+
+        /// <summary>
+        /// 	Gets a reference to the application settings.
+        /// </summary>
+        /// <value>The application settings.</value>
+        public IApplicationSettings Settings { get; set; }
+
+        /// <summary>
+        /// 	Gets the menu shortcut keys for this command (e.g. Keys.F5).
+        /// </summary>
+        /// <value>The shortcut keys for this command (the default is Keys.None).</value>
+        public virtual Keys ShortcutKeys { get; protected set; }
+
+        /// <summary>
+        /// 	Gets the shortcut key text to be displayed as help.
+        /// </summary>
+        /// <value>The shortcut keys text.</value>
+        public string ShortcutKeysText { get; protected set; }
+
+        /// <summary>
+        /// 	Gets the "small image" associated with this control (for use on buttons or menu items).
+        /// 	Use null (or Nothing in Visual Basic) if there is no image.
+        /// </summary>
+        /// <value>The small image representing this command (the default is null).</value>
+        public virtual Image SmallImage { get; protected set; }
+
+        /// <summary>
+        /// 	Attempts to convert the current host windows active form to <see cref = "IEditor" />.
+        /// </summary>
+        /// <value>A reference to the active base editor window, otherwise null.</value>
+        protected IEditor ActiveFormAsEditor
+        {
+            get { return Services.HostWindow.ActiveChildForm as IEditor; }
+        }
+
+        /// <summary>
+        /// 	Attempts to convert the current host windows active form to <see cref = "IQueryEditor" />.
+        /// </summary>
+        /// <value>A reference to the active query editor window, otherwise null.</value>
+        protected IQueryEditor ActiveFormAsSqlQueryEditor
+        {
+            get { return Services.HostWindow.ActiveChildForm as IQueryEditor; }
+        }
+
+        /// <summary>
+        /// 	Gets a reference to the host window.
+        /// </summary>
+        /// <value>The host window.</value>
+        protected IHostWindow HostWindow
+        {
+            get { return _hostWindow ?? (_hostWindow = Services.HostWindow); }
+        }
+
+        /// <summary>
+        /// 	Executes the command based on the current settings (abstract).
+        /// </summary>
+        /// <remarks>
+        /// 	If a commands <see cref="Enabled"/> value is false, a call to <see cref="Execute"/> should have no effect
+        /// 	(and not throw an exception).
+        /// </remarks>
+        public abstract void Execute();
+    }
+}
\ No newline at end of file
Added +40 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs
new file mode 100644
index 0000000..a83ec9a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs
@@ -0,0 +1,40 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>The convert text to lower case command.</summary>
+    public class ConvertTextToLowerCaseCommand
+        : CommandBase
+    {
+        /// <summary>Initializes a new instance of the <see cref="ConvertTextToLowerCaseCommand"/> class.</summary>
+        public ConvertTextToLowerCaseCommand()
+            : base("Convert to 'lower case' text")
+        {
+            ShortcutKeys = Keys.Control | Keys.U;
+        }
+
+        /// <summary>Gets a value indicating whether Enabled.</summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm as IEditor != null; }
+        }
+
+        /// <summary>Execute the command.</summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (Enabled && editor.SelectedText.Length > 0)
+            {
+                editor.InsertText(editor.SelectedText.ToLower());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +49 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs
new file mode 100644
index 0000000..bb4d313
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs
@@ -0,0 +1,49 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Globalization;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The convert text to title case command.
+    /// </summary>
+    public class ConvertTextToTitleCaseCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ConvertTextToTitleCaseCommand" /> class.
+        /// </summary>
+        public ConvertTextToTitleCaseCommand()
+            : base("Convert to 'Title Case' text")
+        {
+            ShortcutKeys = Keys.Control | Keys.Alt | Keys.U;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm as IEditor != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (Enabled && editor.SelectedText.Length > 0)
+            {
+                editor.InsertText(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(editor.SelectedText));
+            }
+        }
+    }
+}
\ No newline at end of file
Added +48 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs
new file mode 100644
index 0000000..c87b07d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs
@@ -0,0 +1,48 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The convert text to upper case command.
+    /// </summary>
+    public class ConvertTextToUpperCaseCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ConvertTextToUpperCaseCommand" /> class.
+        /// </summary>
+        public ConvertTextToUpperCaseCommand()
+            : base("Convert to 'UPPER CASE' text")
+        {
+            ShortcutKeys = Keys.Control | Keys.Shift | Keys.U;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return HostWindow.ActiveChildForm as IEditor != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (Enabled && editor.SelectedText.Length > 0)
+            {
+                editor.InsertText(editor.SelectedText.ToUpper());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs
new file mode 100644
index 0000000..bd0924f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The copy query editor file name command.
+    /// </summary>
+    public class CopyQueryEditorFileNameCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "CopyQueryEditorFileNameCommand" /> class.
+        /// </summary>
+        public CopyQueryEditorFileNameCommand()
+            : base("Copy Filename")
+        {
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = HostWindow.Instance.ActiveMdiChild as IEditor;
+            if (editor != null && editor.FileName != null)
+            {
+                Clipboard.SetText(editor.FileName);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +66 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs
new file mode 100644
index 0000000..10ec35c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs
@@ -0,0 +1,66 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Text;
+using MiniSqlQuery.Core.DbModel;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The display db model dependencies command.
+    /// </summary>
+    public class DisplayDbModelDependenciesCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "DisplayDbModelDependenciesCommand" /> class.
+        /// </summary>
+        public DisplayDbModelDependenciesCommand()
+            : base("Order Tables by FK Dependencies")
+        {
+            SmallImage = ImageResource.table_link;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = Services.Resolve<IEditor>("txt-editor");
+            editor.FileName = null;
+            HostWindow.DisplayDockedForm(editor as DockContent);
+
+            if (HostWindow.DatabaseInspector.DbSchema == null)
+            {
+                HostWindow.DatabaseInspector.LoadDatabaseDetails();
+            }
+
+            var dependencyWalker = new DbModelDependencyWalker(HostWindow.DatabaseInspector.DbSchema);
+            var tables = dependencyWalker.SortTablesByForeignKeyReferences();
+
+            var sb = new StringBuilder();
+            foreach (DbModelTable table in tables)
+            {
+                sb.AppendLine(table.FullName);
+            }
+
+            editor.AllText = sb.ToString();
+        }
+
+        /// <summary>
+        /// Gets a value indicating that the command can be executed (requires a connection).
+        /// </summary>
+        public override bool Enabled
+        {
+            get
+            {
+                return Services.Settings.ConnectionDefinition != null;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +27 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs
new file mode 100644
index 0000000..6cb6567
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs
@@ -0,0 +1,27 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The email author command.
+    /// </summary>
+    public class EmailAuthorCommand
+        : ShowUrlCommand
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "EmailAuthorCommand" /> class.
+        /// </summary>
+        public EmailAuthorCommand()
+            : base("Email the Author", "mailto:mr.paul.kohler" +
+                  '@' + /* bla */
+                  "gmail.com?subject=Mini SQL Query Feedback", ImageResource.email)
+        {
+        }
+    }
+}
\ No newline at end of file
Added +64 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs
new file mode 100644
index 0000000..43980da
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs
@@ -0,0 +1,64 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The execute task command.
+    /// </summary>
+    public class ExecuteTaskCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ExecuteTaskCommand" /> class.
+        /// </summary>
+        public ExecuteTaskCommand()
+            : base("&Execute")
+        {
+            ShortcutKeys = Keys.F5;
+            ShortcutKeysText = "F5";
+            SmallImage = ImageResource.lightning;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                var editor = HostWindow.ActiveChildForm as IPerformTask;
+                if (editor != null)
+                {
+                    return !editor.IsBusy;
+                }
+
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            if (!Enabled)
+            {
+                return;
+            }
+
+            var editor = HostWindow.ActiveChildForm as IPerformTask;
+            if (editor != null)
+            {
+                editor.ExecuteTask();
+            }
+        }
+    }
+}
\ No newline at end of file
Added +33 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs
new file mode 100644
index 0000000..4c557fb
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs
@@ -0,0 +1,33 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The exit application command.
+    /// </summary>
+    public class ExitApplicationCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ExitApplicationCommand" /> class.
+        /// </summary>
+        public ExitApplicationCommand()
+            : base("E&xit")
+        {
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            HostWindow.Instance.Close();
+        }
+    }
+}
\ No newline at end of file
Added +61 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs
new file mode 100644
index 0000000..3df9662
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs
@@ -0,0 +1,61 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using Ninject;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The generate command code command.
+    /// </summary>
+    public class GenerateCommandCodeCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "GenerateCommandCodeCommand" /> class.
+        /// </summary>
+        public GenerateCommandCodeCommand()
+            : base("Generate Command Code")
+        {
+            SmallImage = ImageResource.cog;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            string template =
+                @"    public class $name$Command
+        : CommandBase
+    {
+        public $name$Command()
+            : base(""$desc$"")
+        {
+            //ShortcutKeys = Keys.Control | Keys.?;
+			//SmallImage = ImageResource.?;
+		}
+
+        public override void Execute()
+        {
+			
+        }
+    }";
+
+            string code = template
+                .Replace("$name$", "OI")
+                .Replace("$desc$", "a thing");
+
+            var editor = Services.Container.Get<IQueryEditor>();
+            editor.AllText = code;
+            editor.SetSyntax("C#");
+
+            HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+    }
+}
\ No newline at end of file
Added +47 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs
new file mode 100644
index 0000000..1d91a82
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs
@@ -0,0 +1,47 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The insert guid command.
+    /// </summary>
+    public class InsertGuidCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "InsertGuidCommand" /> class.
+        /// </summary>
+        public InsertGuidCommand()
+            : base("Insert GUID")
+        {
+            // todo SmallImage = ImageResource.;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get { return ActiveFormAsEditor != null; }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = ActiveFormAsEditor;
+            if (editor != null)
+            {
+                editor.InsertText(Guid.NewGuid().ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
Added +40 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs
new file mode 100644
index 0000000..61d72e3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs
@@ -0,0 +1,40 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using Ninject;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The new query form command.
+    /// </summary>
+    public class NewQueryFormCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "NewQueryFormCommand" /> class.
+        /// </summary>
+        public NewQueryFormCommand()
+            : base("New &Query Window")
+        {
+            ShortcutKeys = Keys.Control | Keys.N;
+            SmallImage = ImageResource.page_white;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var editor = Services.Container.Get<IQueryEditor>();
+            editor.FileName = null;
+            HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs
new file mode 100644
index 0000000..7c58716
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The open connection file command.
+    /// </summary>
+    public class OpenConnectionFileCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "OpenConnectionFileCommand" /> class.
+        /// </summary>
+        public OpenConnectionFileCommand()
+            : base("Open the connections file")
+        {
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            string xmlFile = Utility.GetConnectionStringFilename();
+            IEditor editor = Services.Resolve<IFileEditorResolver>().ResolveEditorInstance(xmlFile);
+            editor.FileName = xmlFile;
+            editor.LoadFile();
+            HostWindow.DisplayDockedForm(editor as DockContent);
+        }
+    }
+}
\ No newline at end of file
Added +52 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..d132f55
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs
@@ -0,0 +1,52 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	Description of PasteAroundSelectionCommand.
+    /// </summary>
+    public class PasteAroundSelectionCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "PasteAroundSelectionCommand" /> class.
+        /// </summary>
+        public PasteAroundSelectionCommand()
+          : base("Paste &Around Selection")
+        {
+            ShortcutKeys = Keys.Alt | Keys.A;
+            SmallImage = ImageResource.around_text;
+        }
+
+        /// <summary>
+        /// Gets or sets the "left text".
+        /// </summary>
+        /// <value>The "left text".</value>
+        public static string LeftText { get; set; }
+
+        /// <summary>
+        /// Gets or sets the "right text".
+        /// </summary>
+        /// <value>The "right text".</value>
+        public static string RightText { get; set; }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+            if (queryForm != null)
+            {
+                string newText = string.Concat(LeftText, queryForm.SelectedText, RightText);
+                queryForm.InsertText(newText);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +78 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs
new file mode 100644
index 0000000..c2b2890
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs
@@ -0,0 +1,78 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The print command.
+    /// </summary>
+    public class PrintCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "PrintCommand" /> class.
+        /// </summary>
+        public PrintCommand()
+            : base("Print...")
+        {
+            SmallImage = ImageResource.printer;
+        }
+
+        /// <summary>
+        /// 	Gets a value indicating whether Enabled.
+        /// </summary>
+        /// <value>The enabled state.</value>
+        public override bool Enabled
+        {
+            get
+            {
+                var printable = HostWindow.ActiveChildForm as IPrintableContent;
+                if (printable != null)
+                {
+                    var doc = printable.PrintDocument;
+
+                    if (doc != null)
+                    {
+                        return true;
+                    }
+                }
+
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var printable = HostWindow.ActiveChildForm as IPrintableContent;
+            if (printable != null)
+            {
+                var doc = printable.PrintDocument;
+
+                if (doc != null)
+                {
+                    using (var ppd = new PrintDialog())
+                    {
+                        ppd.Document = doc;
+                        ppd.AllowSomePages = true;
+                        // https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k(System.Windows.Forms.PrintDialog.UseEXDialog);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv3.5);k(DevLang-csharp)&rd=true#Anchor_1
+                        ppd.UseEXDialog = true;
+
+                        if (ppd.ShowDialog(HostWindow.Instance) == DialogResult.OK)
+                        {
+                            doc.Print();
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
Added +44 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs
new file mode 100644
index 0000000..73ec1a8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs
@@ -0,0 +1,44 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The refresh database connection command.
+    /// </summary>
+    public class RefreshDatabaseConnectionCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "RefreshDatabaseConnectionCommand" /> class.
+        /// </summary>
+        public RefreshDatabaseConnectionCommand()
+            : base("&Refresh Database Connection")
+        {
+            SmallImage = ImageResource.database_refresh;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            try
+            {
+                HostWindow.SetPointerState(Cursors.WaitCursor);
+                Settings.ResetConnection();
+                HostWindow.SetStatus(null, "Connection reset");
+            }
+            finally
+            {
+                HostWindow.SetPointerState(Cursors.Default);
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..31d5faf
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The set left paste around selection command.
+    /// </summary>
+    public class SetLeftPasteAroundSelectionCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "SetLeftPasteAroundSelectionCommand" /> class.
+        /// </summary>
+        public SetLeftPasteAroundSelectionCommand()
+            : base("Set Left Paste Around Selection text")
+        {
+            ShortcutKeys = Keys.Alt | Keys.F1;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+            if (queryForm != null)
+            {
+                PasteAroundSelectionCommand.LeftText = queryForm.SelectedText;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +38 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..e7947ff
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs
@@ -0,0 +1,38 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The set right paste around selection command.
+    /// </summary>
+    public class SetRightPasteAroundSelectionCommand : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "SetRightPasteAroundSelectionCommand" /> class.
+        /// </summary>
+        public SetRightPasteAroundSelectionCommand()
+            : base("Set Right Paste Around Selection text")
+        {
+            ShortcutKeys = Keys.Alt | Keys.F2;
+        }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+            if (queryForm != null)
+            {
+                PasteAroundSelectionCommand.RightText = queryForm.SelectedText;
+            }
+        }
+    }
+}
\ No newline at end of file
Added +25 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs
new file mode 100644
index 0000000..4addead
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs
@@ -0,0 +1,25 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The show help command.
+    /// </summary>
+    public class ShowHelpCommand
+        : ShowUrlCommand
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ShowHelpCommand" /> class.
+        /// </summary>
+        public ShowHelpCommand()
+            : base("&Index (github.com ... Quickstart.md)", "https://github.com/paulkohler/minisqlquery/blob/master/src/Docs/Quickstart.md", ImageResource.help)
+        {
+        }
+    }
+}
\ No newline at end of file
Added +51 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs
new file mode 100644
index 0000000..9507141
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs
@@ -0,0 +1,51 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Drawing;
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The show url command.
+    /// </summary>
+    public class ShowUrlCommand
+        : CommandBase
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref="ShowUrlCommand"/> class.
+        /// </summary>
+        /// <param name="name">
+        /// The name of the command.
+        /// </param>
+        /// <param name="url">
+        /// The url of the link to display in a browser.
+        /// </param>
+        /// <param name="image">
+        /// The image to use from the resources.
+        /// </param>
+        public ShowUrlCommand(string name, string url, Image image)
+            : base(name)
+        {
+            Url = url;
+            SmallImage = image;
+        }
+
+        /// <summary>
+        /// 	Gets or sets Url.
+        /// </summary>
+        /// <value>The url.</value>
+        public string Url { get; protected set; }
+
+        /// <summary>
+        /// 	Execute the command.
+        /// </summary>
+        public override void Execute()
+        {
+            Utility.ShowUrl(Url);
+        }
+    }
+}
\ No newline at end of file
Added +25 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs
new file mode 100644
index 0000000..9fb5322
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs
@@ -0,0 +1,25 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+    /// <summary>
+    /// 	The show web page command.
+    /// </summary>
+    public class ShowWebPageCommand
+        : ShowUrlCommand
+    {
+        /// <summary>
+        /// 	Initializes a new instance of the <see cref = "ShowWebPageCommand" /> class.
+        /// </summary>
+        public ShowWebPageCommand()
+            : base("Mini SQL Query on GitHub", "https://github.com/paulkohler/minisqlquery", ImageResource.house)
+        {
+        }
+    }
+}
\ No newline at end of file