diff --git a/BuildProcessTemplates/DefaultTemplate.11.1.xaml b/BuildProcessTemplates/DefaultTemplate.11.1.xaml new file mode 100644 index 0000000..bf54edf --- /dev/null +++ b/BuildProcessTemplates/DefaultTemplate.11.1.xaml @@ -0,0 +1,543 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + [New Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings()] + [False] + [New Microsoft.TeamFoundation.Build.Workflow.Activities.TestSpecList(New Microsoft.TeamFoundation.Build.Workflow.Activities.AgileTestPlatformSpec("**\*test*.dll"))] + ["$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)"] + [False] + [True] + [True] + [Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.All] + + + + [Microsoft.TeamFoundation.Build.Workflow.Activities.CodeAnalysisOption.AsConfigured] + [True] + [Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto] + [True] + [New Microsoft.TeamFoundation.Build.Workflow.Activities.SourceAndSymbolServerSettings(True, Nothing)] + [True] + + + + [New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly }] + [Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal] + + + + + + + All + 11.0 + Assembly references and imported namespaces serialized as XML namespaces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BuildProcessTemplates/DefaultTemplate.xaml b/BuildProcessTemplates/DefaultTemplate.xaml new file mode 100644 index 0000000..12cc624 --- /dev/null +++ b/BuildProcessTemplates/DefaultTemplate.xaml @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Assembly references and imported namespaces serialized as XML namespaces + + + True + + + + + + + + + True + + + + + + + True + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + True + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + True + + + + + + + + + + + + + + + True + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + False + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + False + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BuildProcessTemplates/LabDefaultTemplate.11.xaml b/BuildProcessTemplates/LabDefaultTemplate.11.xaml new file mode 100644 index 0000000..9e1fb0b --- /dev/null +++ b/BuildProcessTemplates/LabDefaultTemplate.11.xaml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + 11.0 + + + + + + 920,3702 + Assembly references and imported namespaces serialized as XML namespaces + + + + + + + + + + + + + + + + + + + + + True + + + + + + + [LabWorkflowParameters.BuildDetails.BuildUri] + + + [ChildBuildDetail.Uri] + + + + + + + + + + + + [BuildLocation] + + + [If(LabWorkflowParameters.BuildDetails.Configuration Is Nothing, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsEmpty Or (SelectedBuildDetail.Information.GetNodesByType(Microsoft.TeamFoundation.Build.Common.InformationTypes.ConfigurationSummary, True)).Count = 1, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsPlatformEmptyOrAnyCpu, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Platform + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration)))] + + + + + + + + + + + + [LabEnvironmentUri] + + + [LabWorkflowParameters.EnvironmentDetails.LabEnvironmentUri.ToString()] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [PostDeploymentSnapshotName] + + + [If(LabWorkflowParameters.BuildDetails.IsTeamSystemBuild = True,String.Format("{0}_{1}_{2}", LabWorkflowParameters.DeploymentDetails.PostDeploymentSnapshotName, BuildNumber,BuildDetail.BuildNumber),String.Format("{0}_{1}", LabWorkflowParameters.DeploymentDetails.PostDeploymentSnapshotName, BuildDetail.BuildNumber))] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [BuildStatus] + + + [Microsoft.TeamFoundation.Build.Client.BuildStatus.PartiallySucceeded] + + + + + + + [BuildStatus] + + + [Microsoft.TeamFoundation.Build.Client.BuildStatus.Failed] + + + + + + + + + + + + \ No newline at end of file diff --git a/BuildProcessTemplates/UpgradeTemplate.xaml b/BuildProcessTemplates/UpgradeTemplate.xaml new file mode 100644 index 0000000..166acb2 --- /dev/null +++ b/BuildProcessTemplates/UpgradeTemplate.xaml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + [New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly }] + + + + [Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto] + [False] + [False] + + + + + + + + + + [Microsoft.TeamFoundation.VersionControl.Client.RecursionType.OneLevel] + [Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal] + + + + All + Assembly references and imported namespaces serialized as XML namespaces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Scriptio.sln b/Scriptio.sln new file mode 100644 index 0000000..14e01d1 --- /dev/null +++ b/Scriptio.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31702.278 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Scriptio", "Scriptio\Scriptio.csproj", "{D00DC776-3386-4146-9AD8-8408FA0F5FD7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D00DC776-3386-4146-9AD8-8408FA0F5FD7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0CE2C505-C0B0-408B-8493-9A913322FB9D} + EndGlobalSection +EndGlobal diff --git a/Scriptio/AboutForm.Designer.cs b/Scriptio/AboutForm.Designer.cs new file mode 100644 index 0000000..a3a9ac0 --- /dev/null +++ b/Scriptio/AboutForm.Designer.cs @@ -0,0 +1,191 @@ +namespace Scriptio +{ + partial class AboutForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm)); + this.btnClose = new System.Windows.Forms.Button(); + this.btnUpdates = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.lblAssemblyVersion = new System.Windows.Forms.Label(); + this.lblClickOnceVersion = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // btnClose + // + this.btnClose.Location = new System.Drawing.Point(306, 367); + this.btnClose.Name = "btnClose"; + this.btnClose.Size = new System.Drawing.Size(75, 23); + this.btnClose.TabIndex = 0; + this.btnClose.Text = "&Close"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // btnUpdates + // + this.btnUpdates.Location = new System.Drawing.Point(8, 367); + this.btnUpdates.Name = "btnUpdates"; + this.btnUpdates.Size = new System.Drawing.Size(141, 23); + this.btnUpdates.TabIndex = 1; + this.btnUpdates.Text = "Check for &Updates"; + this.btnUpdates.UseVisualStyleBackColor = true; + this.btnUpdates.Click += new System.EventHandler(this.btnUpdates_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(9, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(71, 19); + this.label1.TabIndex = 2; + this.label1.Text = "Scriptio"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(10, 32); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(313, 13); + this.label2.TabIndex = 3; + this.label2.Text = "Copyright 2005 Bill Graziano, 2008 Riccardo Spagni and ViaData"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(10, 76); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(92, 13); + this.label3.TabIndex = 4; + this.label3.Text = "Assembly Version:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(10, 99); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(97, 13); + this.label4.TabIndex = 5; + this.label4.Text = "ClickOnce Version:"; + // + // lblAssemblyVersion + // + this.lblAssemblyVersion.AutoSize = true; + this.lblAssemblyVersion.Location = new System.Drawing.Point(133, 76); + this.lblAssemblyVersion.Name = "lblAssemblyVersion"; + this.lblAssemblyVersion.Size = new System.Drawing.Size(13, 13); + this.lblAssemblyVersion.TabIndex = 6; + this.lblAssemblyVersion.Text = "0"; + // + // lblClickOnceVersion + // + this.lblClickOnceVersion.AutoSize = true; + this.lblClickOnceVersion.Location = new System.Drawing.Point(133, 99); + this.lblClickOnceVersion.Name = "lblClickOnceVersion"; + this.lblClickOnceVersion.Size = new System.Drawing.Size(13, 13); + this.lblClickOnceVersion.TabIndex = 7; + this.lblClickOnceVersion.Text = "0"; + // + // textBox1 + // + this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.textBox1.Location = new System.Drawing.Point(13, 126); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(368, 54); + this.textBox1.TabIndex = 8; + this.textBox1.Text = resources.GetString("textBox1.Text"); + // + // richTextBox1 + // + this.richTextBox1.Location = new System.Drawing.Point(10, 186); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.ReadOnly = true; + this.richTextBox1.Size = new System.Drawing.Size(371, 175); + this.richTextBox1.TabIndex = 9; + this.richTextBox1.Text = resources.GetString("richTextBox1.Text"); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(10, 51); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(195, 13); + this.label5.TabIndex = 10; + this.label5.Text = "www.sqlteam.com / www.viadata.co.za"; + // + // AboutForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(389, 397); + this.Controls.Add(this.label5); + this.Controls.Add(this.richTextBox1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.lblClickOnceVersion); + this.Controls.Add(this.lblAssemblyVersion); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.btnUpdates); + this.Controls.Add(this.btnClose); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AboutForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "About"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnUpdates; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label lblAssemblyVersion; + private System.Windows.Forms.Label lblClickOnceVersion; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Label label5; + } +} \ No newline at end of file diff --git a/Scriptio/AboutForm.cs b/Scriptio/AboutForm.cs new file mode 100644 index 0000000..15be50b --- /dev/null +++ b/Scriptio/AboutForm.cs @@ -0,0 +1,92 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Scriptio - Script SQL Server 2005 objects +// Copyright (C) 2005 Bill Graziano + +// This program 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 2 of the License, or +// (at your option) any later version. + +// This program 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 this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +/////////////////////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using System.Reflection; + +using System.Deployment.Application; + +namespace Scriptio +{ + public partial class AboutForm : Form + { + public AboutForm() + { + InitializeComponent(); + + lblAssemblyVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString().Trim(); + + lblClickOnceVersion.Text = (ApplicationDeployment.IsNetworkDeployed ? + " " + ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString().Trim() : + "" ).Trim(); + + if (ApplicationDeployment.IsNetworkDeployed) + btnUpdates.Enabled = true; + else + btnUpdates.Enabled = false; + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void btnUpdates_Click(object sender, EventArgs e) + { + if (ApplicationDeployment.IsNetworkDeployed) + { + Cursor cur = Cursor.Current; + Cursor.Current = Cursors.WaitCursor; + try + { + if (ApplicationDeployment.CurrentDeployment.CheckForUpdate()) + { + Cursor.Current = cur; + if (MessageBox.Show( + "An updated version is available. Would you like to update now?", + "Update Found", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + Cursor.Current = Cursors.WaitCursor; + ApplicationDeployment.CurrentDeployment.Update(); + Cursor.Current = cur; + MessageBox.Show("Update downloaded. Scriptio will now restart."); + Application.Restart(); + } + } + else + { + Cursor.Current = cur; + MessageBox.Show("No updates available at this time."); + } + } + finally + { + Cursor.Current = cur; + } + } + } + + } +} \ No newline at end of file diff --git a/Scriptio/AboutForm.resx b/Scriptio/AboutForm.resx new file mode 100644 index 0000000..ecc10bd --- /dev/null +++ b/Scriptio/AboutForm.resx @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Scriptio comes with ABSOLUTELY NO WARRANTY; This is free software and you are welcome to redistribute it under certain conditions. Please see the GNU GPL license in the source code or at http://www.gnu.org. + + + Version 0.6.1 (May 28, 2008) +------------------------------------------------------------------------------------- +* Bug fix: correct encoding options when scripting to multiple files +* Bug fix: changed row filter so selected system objects aren't scripted + +Version 0.6 (May 23, 2008) +------------------------------------------------------------------------------------- +* First code refresh by Riccardo Spagni +* Complete overhaul of Populate Objects code +* Complete overhaul of Script code to use the SMO Scripter object +* Deprecated old SQLDataReader code +* Deprecated old SMOObject.Script code +* Code updated to script triggers +* Added code behind Save As button +* New option to support SQL 2000 file extensions +* New option to support UNICODE or ASCII file output +* Changed filtering system into group select system +* Added progress bar and status label updates everywhere + +Version 0.5.5 (June 13, 2006) +------------------------------------------------------------------------------------- +* Minor Bug Fixes + +Version 0.5.4 (Feb 17th, 2006) +------------------------------------------------------------------------------------- +* When you connect using a SQL Server account (as opposed to a + trusted Windows account) Scriptio will now actually do the scripting + using the SQL Server account. + +Version 0.5.3 (Feb 12th, 2006) +------------------------------------------------------------------------------------- +* Script assemblies +* Script object permissions + + + + + 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 + AD8AAAD/4AAB//AAA//wAAf/+EAP///4H/8= + + + \ No newline at end of file diff --git a/Scriptio/FormMain.Designer.cs b/Scriptio/FormMain.Designer.cs new file mode 100644 index 0000000..4b83e85 --- /dev/null +++ b/Scriptio/FormMain.Designer.cs @@ -0,0 +1,860 @@ +namespace Scriptio +{ + partial class Scriptio + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Scriptio)); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabObjects = new System.Windows.Forms.TabPage(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.clbType = new System.Windows.Forms.CheckedListBox(); + this.clbSchema = new System.Windows.Forms.CheckedListBox(); + this.label3 = new System.Windows.Forms.Label(); + this.chkScriptAll = new System.Windows.Forms.CheckBox(); + this.label4 = new System.Windows.Forms.Label(); + this.dgAvailableObjects = new System.Windows.Forms.DataGridView(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.chkPermissions = new System.Windows.Forms.CheckBox(); + this.chkIndexes = new System.Windows.Forms.CheckBox(); + this.chkKeys = new System.Windows.Forms.CheckBox(); + this.chkExistance = new System.Windows.Forms.CheckBox(); + this.chkDrop = new System.Windows.Forms.CheckBox(); + this.chkCreate = new System.Windows.Forms.CheckBox(); + this.chkIncludeHeaders = new System.Windows.Forms.CheckBox(); + this.ddlDatabases = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.txtPassword = new System.Windows.Forms.TextBox(); + this.txtUsername = new System.Windows.Forms.TextBox(); + this.btnConnect = new System.Windows.Forms.Button(); + this.chkUseWindowsAuthentication = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.txtServerName = new System.Windows.Forms.TextBox(); + this.tabOptions = new System.Windows.Forms.TabPage(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.chkGenerateASCII = new System.Windows.Forms.CheckBox(); + this.chkSchemaQualifyFK = new System.Windows.Forms.CheckBox(); + this.chkSchemaQualifyDrops = new System.Windows.Forms.CheckBox(); + this.chkSchemaQualifyCreates = new System.Windows.Forms.CheckBox(); + this.chkCollation = new System.Windows.Forms.CheckBox(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.chkNamingConventions = new System.Windows.Forms.CheckBox(); + this.rdoOnePerObject = new System.Windows.Forms.RadioButton(); + this.btnPickDirectory = new System.Windows.Forms.Button(); + this.label5 = new System.Windows.Forms.Label(); + this.txtSaveLocation = new System.Windows.Forms.TextBox(); + this.rdoOneFile = new System.Windows.Forms.RadioButton(); + this.rdoNoFiles = new System.Windows.Forms.RadioButton(); + this.tabResult = new System.Windows.Forms.TabPage(); + this.btnCopyClipboard = new System.Windows.Forms.Button(); + this.btnSaveAs = new System.Windows.Forms.Button(); + this.txtResult = new System.Windows.Forms.TextBox(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnScript = new System.Windows.Forms.Button(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar(); + this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tabControl1.SuspendLayout(); + this.tabObjects.SuspendLayout(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dgAvailableObjects)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tabOptions.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.tabResult.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabObjects); + this.tabControl1.Controls.Add(this.tabOptions); + this.tabControl1.Controls.Add(this.tabResult); + this.tabControl1.Location = new System.Drawing.Point(12, 27); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(780, 622); + this.tabControl1.TabIndex = 0; + // + // tabObjects + // + this.tabObjects.Controls.Add(this.groupBox3); + this.tabObjects.Controls.Add(this.dgAvailableObjects); + this.tabObjects.Controls.Add(this.groupBox2); + this.tabObjects.Controls.Add(this.groupBox1); + this.tabObjects.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabObjects.Location = new System.Drawing.Point(4, 24); + this.tabObjects.Name = "tabObjects"; + this.tabObjects.Padding = new System.Windows.Forms.Padding(3); + this.tabObjects.Size = new System.Drawing.Size(772, 594); + this.tabObjects.TabIndex = 0; + this.tabObjects.Text = "Database Objects"; + this.tabObjects.UseVisualStyleBackColor = true; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.clbType); + this.groupBox3.Controls.Add(this.clbSchema); + this.groupBox3.Controls.Add(this.label3); + this.groupBox3.Controls.Add(this.chkScriptAll); + this.groupBox3.Controls.Add(this.label4); + this.groupBox3.Location = new System.Drawing.Point(6, 143); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(756, 147); + this.groupBox3.TabIndex = 13; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Filter"; + // + // clbType + // + this.clbType.CheckOnClick = true; + this.clbType.FormattingEnabled = true; + this.clbType.Location = new System.Drawing.Point(387, 19); + this.clbType.Name = "clbType"; + this.clbType.Size = new System.Drawing.Size(196, 124); + this.clbType.TabIndex = 15; + this.clbType.SelectedIndexChanged += new System.EventHandler(this.ClbType_SelectedIndexChanged); + // + // clbSchema + // + this.clbSchema.CheckOnClick = true; + this.clbSchema.FormattingEnabled = true; + this.clbSchema.Location = new System.Drawing.Point(145, 19); + this.clbSchema.Name = "clbSchema"; + this.clbSchema.Size = new System.Drawing.Size(196, 124); + this.clbSchema.TabIndex = 14; + this.clbSchema.SelectedIndexChanged += new System.EventHandler(this.ClbSchema_SelectedIndexChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(347, 19); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(34, 13); + this.label3.TabIndex = 13; + this.label3.Text = "Type:"; + // + // chkScriptAll + // + this.chkScriptAll.AutoSize = true; + this.chkScriptAll.Location = new System.Drawing.Point(9, 19); + this.chkScriptAll.Name = "chkScriptAll"; + this.chkScriptAll.Size = new System.Drawing.Size(67, 17); + this.chkScriptAll.TabIndex = 9; + this.chkScriptAll.Text = "Script All"; + this.chkScriptAll.UseVisualStyleBackColor = true; + this.chkScriptAll.CheckedChanged += new System.EventHandler(this.ChkScriptAll_CheckedChanged); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(90, 20); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(49, 13); + this.label4.TabIndex = 12; + this.label4.Text = "Schema:"; + // + // dgAvailableObjects + // + this.dgAvailableObjects.AllowUserToAddRows = false; + this.dgAvailableObjects.AllowUserToDeleteRows = false; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgAvailableObjects.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + this.dgAvailableObjects.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgAvailableObjects.DefaultCellStyle = dataGridViewCellStyle2; + this.dgAvailableObjects.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; + this.dgAvailableObjects.Location = new System.Drawing.Point(6, 296); + this.dgAvailableObjects.Name = "dgAvailableObjects"; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgAvailableObjects.RowHeadersDefaultCellStyle = dataGridViewCellStyle3; + this.dgAvailableObjects.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.dgAvailableObjects.Size = new System.Drawing.Size(756, 292); + this.dgAvailableObjects.TabIndex = 8; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.chkPermissions); + this.groupBox2.Controls.Add(this.chkIndexes); + this.groupBox2.Controls.Add(this.chkKeys); + this.groupBox2.Controls.Add(this.chkExistance); + this.groupBox2.Controls.Add(this.chkDrop); + this.groupBox2.Controls.Add(this.chkCreate); + this.groupBox2.Controls.Add(this.chkIncludeHeaders); + this.groupBox2.Controls.Add(this.ddlDatabases); + this.groupBox2.Controls.Add(this.label2); + this.groupBox2.Location = new System.Drawing.Point(344, 6); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(418, 131); + this.groupBox2.TabIndex = 3; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Options"; + // + // chkPermissions + // + this.chkPermissions.AutoSize = true; + this.chkPermissions.Location = new System.Drawing.Point(262, 40); + this.chkPermissions.Name = "chkPermissions"; + this.chkPermissions.Size = new System.Drawing.Size(119, 17); + this.chkPermissions.TabIndex = 12; + this.chkPermissions.Text = "Include Permissions"; + this.chkPermissions.UseVisualStyleBackColor = true; + // + // chkIndexes + // + this.chkIndexes.AutoSize = true; + this.chkIndexes.Checked = true; + this.chkIndexes.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkIndexes.Location = new System.Drawing.Point(150, 63); + this.chkIndexes.Name = "chkIndexes"; + this.chkIndexes.Size = new System.Drawing.Size(101, 17); + this.chkIndexes.TabIndex = 11; + this.chkIndexes.Text = "Include Indexes"; + this.chkIndexes.UseVisualStyleBackColor = true; + // + // chkKeys + // + this.chkKeys.AutoSize = true; + this.chkKeys.Checked = true; + this.chkKeys.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkKeys.Location = new System.Drawing.Point(150, 40); + this.chkKeys.Name = "chkKeys"; + this.chkKeys.Size = new System.Drawing.Size(87, 17); + this.chkKeys.TabIndex = 10; + this.chkKeys.Text = "Include Keys"; + this.chkKeys.UseVisualStyleBackColor = true; + // + // chkExistance + // + this.chkExistance.AutoSize = true; + this.chkExistance.Checked = true; + this.chkExistance.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkExistance.Location = new System.Drawing.Point(9, 86); + this.chkExistance.Name = "chkExistance"; + this.chkExistance.Size = new System.Drawing.Size(121, 17); + this.chkExistance.TabIndex = 9; + this.chkExistance.Text = "Check for Existance"; + this.chkExistance.UseVisualStyleBackColor = true; + // + // chkDrop + // + this.chkDrop.AutoSize = true; + this.chkDrop.Checked = true; + this.chkDrop.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkDrop.Location = new System.Drawing.Point(9, 63); + this.chkDrop.Name = "chkDrop"; + this.chkDrop.Size = new System.Drawing.Size(95, 17); + this.chkDrop.TabIndex = 8; + this.chkDrop.Text = "Include DROP"; + this.chkDrop.UseVisualStyleBackColor = true; + // + // chkCreate + // + this.chkCreate.AutoSize = true; + this.chkCreate.Checked = true; + this.chkCreate.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkCreate.Location = new System.Drawing.Point(9, 40); + this.chkCreate.Name = "chkCreate"; + this.chkCreate.Size = new System.Drawing.Size(107, 17); + this.chkCreate.TabIndex = 7; + this.chkCreate.Text = "Include CREATE"; + this.chkCreate.UseVisualStyleBackColor = true; + // + // chkIncludeHeaders + // + this.chkIncludeHeaders.AutoSize = true; + this.chkIncludeHeaders.Checked = true; + this.chkIncludeHeaders.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkIncludeHeaders.Location = new System.Drawing.Point(150, 86); + this.chkIncludeHeaders.Name = "chkIncludeHeaders"; + this.chkIncludeHeaders.Size = new System.Drawing.Size(104, 17); + this.chkIncludeHeaders.TabIndex = 6; + this.chkIncludeHeaders.Text = "Include Headers"; + this.chkIncludeHeaders.UseVisualStyleBackColor = true; + // + // ddlDatabases + // + this.ddlDatabases.FormattingEnabled = true; + this.ddlDatabases.Location = new System.Drawing.Point(68, 13); + this.ddlDatabases.Name = "ddlDatabases"; + this.ddlDatabases.Size = new System.Drawing.Size(121, 21); + this.ddlDatabases.TabIndex = 5; + this.ddlDatabases.SelectedIndexChanged += new System.EventHandler(this.DdlDatabases_SelectedIndexChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 16); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(56, 13); + this.label2.TabIndex = 4; + this.label2.Text = "Database:"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.txtPassword); + this.groupBox1.Controls.Add(this.txtUsername); + this.groupBox1.Controls.Add(this.btnConnect); + this.groupBox1.Controls.Add(this.chkUseWindowsAuthentication); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.txtServerName); + this.groupBox1.Location = new System.Drawing.Point(6, 6); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(322, 131); + this.groupBox1.TabIndex = 2; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Server"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(11, 92); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(56, 13); + this.label7.TabIndex = 7; + this.label7.Text = "Password:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(9, 66); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(58, 13); + this.label6.TabIndex = 6; + this.label6.Text = "Username:"; + // + // txtPassword + // + this.txtPassword.Enabled = false; + this.txtPassword.Location = new System.Drawing.Point(73, 89); + this.txtPassword.Name = "txtPassword"; + this.txtPassword.PasswordChar = '*'; + this.txtPassword.Size = new System.Drawing.Size(143, 20); + this.txtPassword.TabIndex = 5; + // + // txtUsername + // + this.txtUsername.Enabled = false; + this.txtUsername.Location = new System.Drawing.Point(73, 63); + this.txtUsername.Name = "txtUsername"; + this.txtUsername.Size = new System.Drawing.Size(143, 20); + this.txtUsername.TabIndex = 4; + // + // btnConnect + // + this.btnConnect.Location = new System.Drawing.Point(241, 102); + this.btnConnect.Name = "btnConnect"; + this.btnConnect.Size = new System.Drawing.Size(75, 23); + this.btnConnect.TabIndex = 3; + this.btnConnect.Text = "&Connect"; + this.btnConnect.UseVisualStyleBackColor = true; + this.btnConnect.Click += new System.EventHandler(this.BtnConnect_Click); + // + // chkUseWindowsAuthentication + // + this.chkUseWindowsAuthentication.AutoSize = true; + this.chkUseWindowsAuthentication.Checked = true; + this.chkUseWindowsAuthentication.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkUseWindowsAuthentication.Location = new System.Drawing.Point(73, 40); + this.chkUseWindowsAuthentication.Name = "chkUseWindowsAuthentication"; + this.chkUseWindowsAuthentication.Size = new System.Drawing.Size(163, 17); + this.chkUseWindowsAuthentication.TabIndex = 2; + this.chkUseWindowsAuthentication.Text = "Use Windows Authentication"; + this.chkUseWindowsAuthentication.UseVisualStyleBackColor = true; + this.chkUseWindowsAuthentication.CheckedChanged += new System.EventHandler(this.ChkUseWindowsAuthentication_CheckedChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 16); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Server:"; + // + // txtServerName + // + this.txtServerName.Location = new System.Drawing.Point(73, 13); + this.txtServerName.Name = "txtServerName"; + this.txtServerName.Size = new System.Drawing.Size(169, 20); + this.txtServerName.TabIndex = 0; + // + // tabOptions + // + this.tabOptions.Controls.Add(this.groupBox5); + this.tabOptions.Controls.Add(this.groupBox4); + this.tabOptions.Location = new System.Drawing.Point(4, 24); + this.tabOptions.Name = "tabOptions"; + this.tabOptions.Size = new System.Drawing.Size(772, 594); + this.tabOptions.TabIndex = 3; + this.tabOptions.Text = "More Options"; + this.tabOptions.UseVisualStyleBackColor = true; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.chkGenerateASCII); + this.groupBox5.Controls.Add(this.chkSchemaQualifyFK); + this.groupBox5.Controls.Add(this.chkSchemaQualifyDrops); + this.groupBox5.Controls.Add(this.chkSchemaQualifyCreates); + this.groupBox5.Controls.Add(this.chkCollation); + this.groupBox5.Location = new System.Drawing.Point(3, 141); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(766, 450); + this.groupBox5.TabIndex = 19; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Additional Scription Options"; + // + // chkGenerateASCII + // + this.chkGenerateASCII.AutoSize = true; + this.chkGenerateASCII.Checked = true; + this.chkGenerateASCII.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkGenerateASCII.Location = new System.Drawing.Point(7, 115); + this.chkGenerateASCII.Name = "chkGenerateASCII"; + this.chkGenerateASCII.Size = new System.Drawing.Size(317, 17); + this.chkGenerateASCII.TabIndex = 4; + this.chkGenerateASCII.Text = "Generate ASCII Files (Unchecked Generates UNICODE Files)"; + this.chkGenerateASCII.UseVisualStyleBackColor = true; + // + // chkSchemaQualifyFK + // + this.chkSchemaQualifyFK.AutoSize = true; + this.chkSchemaQualifyFK.Checked = true; + this.chkSchemaQualifyFK.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkSchemaQualifyFK.Location = new System.Drawing.Point(7, 92); + this.chkSchemaQualifyFK.Name = "chkSchemaQualifyFK"; + this.chkSchemaQualifyFK.Size = new System.Drawing.Size(186, 17); + this.chkSchemaQualifyFK.TabIndex = 3; + this.chkSchemaQualifyFK.Text = "Qualify Foreign Keys with Schema"; + this.chkSchemaQualifyFK.UseVisualStyleBackColor = true; + // + // chkSchemaQualifyDrops + // + this.chkSchemaQualifyDrops.AutoSize = true; + this.chkSchemaQualifyDrops.Checked = true; + this.chkSchemaQualifyDrops.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkSchemaQualifyDrops.Location = new System.Drawing.Point(7, 68); + this.chkSchemaQualifyDrops.Name = "chkSchemaQualifyDrops"; + this.chkSchemaQualifyDrops.Size = new System.Drawing.Size(161, 17); + this.chkSchemaQualifyDrops.TabIndex = 2; + this.chkSchemaQualifyDrops.Text = "Qualify DROPs with Schema"; + this.chkSchemaQualifyDrops.UseVisualStyleBackColor = true; + // + // chkSchemaQualifyCreates + // + this.chkSchemaQualifyCreates.AutoSize = true; + this.chkSchemaQualifyCreates.Checked = true; + this.chkSchemaQualifyCreates.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkSchemaQualifyCreates.Location = new System.Drawing.Point(7, 44); + this.chkSchemaQualifyCreates.Name = "chkSchemaQualifyCreates"; + this.chkSchemaQualifyCreates.Size = new System.Drawing.Size(173, 17); + this.chkSchemaQualifyCreates.TabIndex = 1; + this.chkSchemaQualifyCreates.Text = "Qualify CREATEs with Schema"; + this.chkSchemaQualifyCreates.UseVisualStyleBackColor = true; + // + // chkCollation + // + this.chkCollation.AutoSize = true; + this.chkCollation.Checked = true; + this.chkCollation.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkCollation.Location = new System.Drawing.Point(7, 20); + this.chkCollation.Name = "chkCollation"; + this.chkCollation.Size = new System.Drawing.Size(104, 17); + this.chkCollation.TabIndex = 0; + this.chkCollation.Text = "Include Collation"; + this.chkCollation.UseVisualStyleBackColor = true; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.chkNamingConventions); + this.groupBox4.Controls.Add(this.rdoOnePerObject); + this.groupBox4.Controls.Add(this.btnPickDirectory); + this.groupBox4.Controls.Add(this.label5); + this.groupBox4.Controls.Add(this.txtSaveLocation); + this.groupBox4.Controls.Add(this.rdoOneFile); + this.groupBox4.Controls.Add(this.rdoNoFiles); + this.groupBox4.Location = new System.Drawing.Point(3, 3); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(766, 131); + this.groupBox4.TabIndex = 18; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Files to Generate"; + // + // chkNamingConventions + // + this.chkNamingConventions.AutoSize = true; + this.chkNamingConventions.Enabled = false; + this.chkNamingConventions.Location = new System.Drawing.Point(129, 67); + this.chkNamingConventions.Name = "chkNamingConventions"; + this.chkNamingConventions.Size = new System.Drawing.Size(271, 17); + this.chkNamingConventions.TabIndex = 18; + this.chkNamingConventions.Text = "Generate Files With SQL 2000 Naming Conventions"; + this.chkNamingConventions.UseVisualStyleBackColor = true; + // + // rdoOnePerObject + // + this.rdoOnePerObject.AutoSize = true; + this.rdoOnePerObject.Location = new System.Drawing.Point(7, 67); + this.rdoOnePerObject.Name = "rdoOnePerObject"; + this.rdoOnePerObject.Size = new System.Drawing.Size(116, 17); + this.rdoOnePerObject.TabIndex = 2; + this.rdoOnePerObject.Text = "One File per Object"; + this.rdoOnePerObject.UseVisualStyleBackColor = true; + this.rdoOnePerObject.CheckedChanged += new System.EventHandler(this.RdoOnePerObject_CheckedChanged); + // + // btnPickDirectory + // + this.btnPickDirectory.Location = new System.Drawing.Point(501, 96); + this.btnPickDirectory.Name = "btnPickDirectory"; + this.btnPickDirectory.Size = new System.Drawing.Size(26, 23); + this.btnPickDirectory.TabIndex = 16; + this.btnPickDirectory.Text = "..."; + this.btnPickDirectory.UseVisualStyleBackColor = true; + this.btnPickDirectory.Click += new System.EventHandler(this.BtnPickDirectory_Click); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(3, 101); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(51, 13); + this.label5.TabIndex = 17; + this.label5.Text = "Location:"; + // + // txtSaveLocation + // + this.txtSaveLocation.Location = new System.Drawing.Point(60, 98); + this.txtSaveLocation.Name = "txtSaveLocation"; + this.txtSaveLocation.Size = new System.Drawing.Size(435, 20); + this.txtSaveLocation.TabIndex = 15; + // + // rdoOneFile + // + this.rdoOneFile.AutoSize = true; + this.rdoOneFile.Location = new System.Drawing.Point(7, 43); + this.rdoOneFile.Name = "rdoOneFile"; + this.rdoOneFile.Size = new System.Drawing.Size(64, 17); + this.rdoOneFile.TabIndex = 1; + this.rdoOneFile.Text = "One File"; + this.rdoOneFile.UseVisualStyleBackColor = true; + this.rdoOneFile.CheckedChanged += new System.EventHandler(this.RdoOneFile_CheckedChanged); + // + // rdoNoFiles + // + this.rdoNoFiles.AutoSize = true; + this.rdoNoFiles.Checked = true; + this.rdoNoFiles.Location = new System.Drawing.Point(6, 19); + this.rdoNoFiles.Name = "rdoNoFiles"; + this.rdoNoFiles.Size = new System.Drawing.Size(63, 17); + this.rdoNoFiles.TabIndex = 0; + this.rdoNoFiles.TabStop = true; + this.rdoNoFiles.Text = "No Files"; + this.rdoNoFiles.UseVisualStyleBackColor = true; + this.rdoNoFiles.CheckedChanged += new System.EventHandler(this.RdoNoFiles_CheckedChanged); + // + // tabResult + // + this.tabResult.Controls.Add(this.btnCopyClipboard); + this.tabResult.Controls.Add(this.btnSaveAs); + this.tabResult.Controls.Add(this.txtResult); + this.tabResult.Location = new System.Drawing.Point(4, 24); + this.tabResult.Name = "tabResult"; + this.tabResult.Size = new System.Drawing.Size(772, 594); + this.tabResult.TabIndex = 2; + this.tabResult.Text = "Generated Script"; + this.tabResult.UseVisualStyleBackColor = true; + // + // btnCopyClipboard + // + this.btnCopyClipboard.Location = new System.Drawing.Point(3, 571); + this.btnCopyClipboard.Name = "btnCopyClipboard"; + this.btnCopyClipboard.Size = new System.Drawing.Size(135, 21); + this.btnCopyClipboard.TabIndex = 2; + this.btnCopyClipboard.Text = "&Copy to Clipboard"; + this.btnCopyClipboard.UseVisualStyleBackColor = true; + this.btnCopyClipboard.Click += new System.EventHandler(this.BtnCopyClipboard_Click); + // + // btnSaveAs + // + this.btnSaveAs.Location = new System.Drawing.Point(144, 571); + this.btnSaveAs.Name = "btnSaveAs"; + this.btnSaveAs.Size = new System.Drawing.Size(75, 21); + this.btnSaveAs.TabIndex = 1; + this.btnSaveAs.Text = "Save &As..."; + this.btnSaveAs.UseVisualStyleBackColor = true; + this.btnSaveAs.Click += new System.EventHandler(this.BtnSaveAs_Click); + // + // txtResult + // + this.txtResult.Location = new System.Drawing.Point(3, 3); + this.txtResult.Multiline = true; + this.txtResult.Name = "txtResult"; + this.txtResult.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.txtResult.Size = new System.Drawing.Size(766, 562); + this.txtResult.TabIndex = 0; + this.txtResult.WordWrap = false; + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(703, 655); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 1; + this.btnCancel.Text = "&Exit"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnScript + // + this.btnScript.Location = new System.Drawing.Point(622, 655); + this.btnScript.Name = "btnScript"; + this.btnScript.Size = new System.Drawing.Size(75, 23); + this.btnScript.TabIndex = 2; + this.btnScript.Text = "&Script"; + this.btnScript.UseVisualStyleBackColor = true; + this.btnScript.Click += new System.EventHandler(this.btnScript_Click); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1, + this.toolStripProgressBar1}); + this.statusStrip1.Location = new System.Drawing.Point(0, 676); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(792, 22); + this.statusStrip1.SizingGrip = false; + this.statusStrip1.TabIndex = 4; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.AutoSize = false; + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(300, 17); + this.toolStripStatusLabel1.Text = "Ready"; + this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // toolStripProgressBar1 + // + this.toolStripProgressBar1.Name = "toolStripProgressBar1"; + this.toolStripProgressBar1.Size = new System.Drawing.Size(200, 16); + // + // saveFileDialog1 + // + this.saveFileDialog1.DefaultExt = "sql"; + this.saveFileDialog1.Filter = "SQL scripts (*.sql)|*.sql|Stored Procedure scripts (*.prc)|*.prc|View scripts (*." + + "viw)|*.viw|UDF scripts (*.udf)|*.udf|Table scripts (*.tab)|*.tab|Trigger scripts" + + " (*.trg)|*.trg|All files (*.*)|*.*"; + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem, + this.helpToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(792, 24); + this.menuStrip1.TabIndex = 5; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.exitToolStripMenuItem}); + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "&File"; + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.Size = new System.Drawing.Size(100, 22); + this.exitToolStripMenuItem.Text = "&Exit"; + // + // helpToolStripMenuItem + // + this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.aboutToolStripMenuItem}); + this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; + this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); + this.helpToolStripMenuItem.Text = "&Help"; + // + // aboutToolStripMenuItem + // + this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + this.aboutToolStripMenuItem.ShowShortcutKeys = false; + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(100, 22); + this.aboutToolStripMenuItem.Text = "&About"; + // + // Scriptio + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(792, 698); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.btnScript); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.tabControl1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.menuStrip1; + this.MaximizeBox = false; + this.MaximumSize = new System.Drawing.Size(814, 740); + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(814, 740); + this.Name = "Scriptio"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Scriptio"; + this.Load += new System.EventHandler(this.Scriptio_Load); + this.tabControl1.ResumeLayout(false); + this.tabObjects.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dgAvailableObjects)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tabOptions.ResumeLayout(false); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.tabResult.ResumeLayout(false); + this.tabResult.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabObjects; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtServerName; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.Button btnScript; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.CheckBox chkUseWindowsAuthentication; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Button btnConnect; + private System.Windows.Forms.ComboBox ddlDatabases; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TabPage tabResult; + private System.Windows.Forms.TextBox txtResult; + private System.Windows.Forms.DataGridView dgAvailableObjects; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.CheckBox chkIncludeHeaders; + private System.Windows.Forms.CheckBox chkExistance; + private System.Windows.Forms.CheckBox chkDrop; + private System.Windows.Forms.CheckBox chkCreate; + private System.Windows.Forms.CheckBox chkKeys; + private System.Windows.Forms.CheckBox chkScriptAll; + private System.Windows.Forms.CheckBox chkIndexes; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtPassword; + private System.Windows.Forms.TextBox txtUsername; + private System.Windows.Forms.SaveFileDialog saveFileDialog1; + private System.Windows.Forms.Button btnSaveAs; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + private System.Windows.Forms.TabPage tabOptions; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.RadioButton rdoOnePerObject; + private System.Windows.Forms.RadioButton rdoOneFile; + private System.Windows.Forms.RadioButton rdoNoFiles; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btnPickDirectory; + private System.Windows.Forms.TextBox txtSaveLocation; + private System.Windows.Forms.Button btnCopyClipboard; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.CheckBox chkCollation; + private System.Windows.Forms.CheckBox chkSchemaQualifyCreates; + private System.Windows.Forms.CheckBox chkSchemaQualifyDrops; + private System.Windows.Forms.CheckBox chkSchemaQualifyFK; + private System.Windows.Forms.CheckBox chkPermissions; + private System.Windows.Forms.CheckBox chkGenerateASCII; + private System.Windows.Forms.CheckBox chkNamingConventions; + private System.Windows.Forms.CheckedListBox clbType; + private System.Windows.Forms.CheckedListBox clbSchema; + + + } +} + diff --git a/Scriptio/FormMain.cs b/Scriptio/FormMain.cs new file mode 100644 index 0000000..a08a4c3 --- /dev/null +++ b/Scriptio/FormMain.cs @@ -0,0 +1,767 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Scriptio - Script SQL Server 2005 objects +// Copyright (C) 2005 Bill Graziano and 2008 Riccardo Spagni + +// This program 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 2 of the License, or +// (at your option) any later version. + +// This program 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 this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +/////////////////////////////////////////////////////////////////////////////////////////////// + +// Please note: comments marked RS are for code pieces added by Riccardo Spagni + +// TODO: (ie. optional extras:) +// +// - NB: Check if this works with SQL 2008 (Katmai) +// +// - NB: Find a way of integrating with SQL 2005's context menu; maybe have Scriptio as a contex menu item on a +// database level, and then launch Scriptio with the authentication items already filled in, the database list +// populated with a single item (the database we've right clicked, obviously) and grayed out, and fire off the +// PopulateDatabases method. Also, see if we can't integrate it with SQL 2008 as well whilst we're about it. +// +// - Build intelligence into the selection system, so that when you select an item in the DataGrid it checks if +// all Stored Procs, for example, have been manually ticked in the DataGrid, and then reflects that in the +// CheckedListBox by ticking the StoredProc's item. +// +// - "Beautify" the items in clbType, so that it puts a space between capitalised words - ie. when it adds +// UserDefinedTypes to the clbType items collection, it should add it as "User Defined Types". Beautify the +// description in the DataGrid too so that they match. +// +// - Add other encoding options (UTF-7, UTF-8, UTF-32, BigEndianUnicode), dependant on demand +// +// - Make sure we've exposed ALL relevant ScriptingOptions properties to the user, you never know what oddity might +// be required by a single person in a single environment + +using Microsoft.SqlServer.Management.Common; +using Microsoft.SqlServer.Management.Sdk.Sfc; +using Microsoft.SqlServer.Management.Smo; +using System; +using System.Collections.Specialized; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Text; +using System.Windows.Forms; + +namespace Scriptio +{ + public partial class Scriptio : Form + { + // RS: It's better to use StringBuilder to build our script than string concatenation, as the StringBuilder + // object is more efficient. When you concatenate a string, the original string is actually destroyed on + // the heap and a new one is created. + private StringBuilder result; + + // RS: This is the main DataTable that contains ALL of the objects on the database, system and user + // supplied + private DataTable allobjects = new DataTable(); + + // RS: We use a DataView with a custom RowFilter to ensure that we exclude system supplied objects from + // the DataGrid that the user will use to select the objects they want to script + private DataView allobjectsview; + + public Scriptio() + { + InitializeComponent(); + + aboutToolStripMenuItem.Click += new EventHandler(AboutToolStripMenuItem_Click); + exitToolStripMenuItem.Click += new EventHandler(ExitToolStripMenuItem_Click); + } + + #region Menu Stuff + + private void ExitToolStripMenuItem_Click(object sender, EventArgs e) + { + Close(); + } + + private void AboutToolStripMenuItem_Click(object sender, EventArgs e) + { + AboutForm aboutForm = new AboutForm(); + aboutForm.ShowDialog(); + } + + #endregion Menu Stuff + + private void BtnCancel_Click(object sender, EventArgs e) + { + Close(); + } + + private void BtnConnect_Click(object sender, EventArgs e) + { + PopulateDatabases(txtServerName.Text); + } + + private void PopulateDatabases(string serverName) + { + // RS: Tell the user what we're doing when we do it + toolStripStatusLabel1.Text = "Reading databases..."; + toolStripProgressBar1.Value = 0; + Application.DoEvents(); + ddlDatabases.Items.Clear(); + try + { + SqlConnection connection = GetConnection("tempdb"); + //Server srv = new Server(new ServerConnection(connection)); + Server srv = new Server(serverName); + + // Check if we're using 2005 or higher + if (srv.Information.Version.Major >= 9) + { + // RS: Set the progress bar maximum so we can update it as we step through + toolStripProgressBar1.Maximum = srv.Databases.Count; + + ddlDatabases.Items.Add("(Select a database)"); + + foreach (Database db in srv.Databases) + { + // RS: Update the progress bar + toolStripProgressBar1.Value++; + if (!db.IsSystemObject && db.IsAccessible) + { + ddlDatabases.Items.Add(db.Name); + } + } + + if (ddlDatabases.Items.Count > 0) + { + ddlDatabases.SelectedIndex = 0; + } + } + else + { + MessageBox.Show("SMO Scripting is only available for SQL Server 2005 and higher", + "Incorrect Server Version", MessageBoxButtons.OK, MessageBoxIcon.Error); + + dgAvailableObjects.Rows.Clear(); + chkScriptAll.Checked = false; + ddlDatabases.ResetText(); + } + } + catch (ConnectionFailureException) + { + MessageBox.Show("Unable to connect to server", + "Invalid Server", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + // RS: Reset the label text + toolStripStatusLabel1.Text = "Ready"; + } + + private void PopulateObjects(string serverName, string databaseName) + { + // RS: This has been completely overhauled and replaced. Instead of querying the sys.all_objects, + // sys.schemas and sys.assemblies tables we step through our SMO database object. This is efficient + // enough - even on large databases - but it allows us to use the Scripter object to script objects + // based on the URN returned. + Server srv; + + if (chkUseWindowsAuthentication.Checked) + { + srv = new Server(txtServerName.Text); + } + else + { + srv = new Server(new ServerConnection(txtServerName.Text, txtUsername.Text, txtPassword.Text)); + } + + Database db = srv.Databases[ddlDatabases.SelectedItem.ToString()]; + + // RS: Set the DataTable up so we're all ready to add data to it + allobjects = null; + allobjects = new DataTable(); + allobjects.Columns.Add("Script", typeof(bool)); + allobjects.Columns.Add("Schema", typeof(string)); + allobjects.Columns.Add("Object", typeof(string)); + allobjects.Columns.Add("Type", typeof(string)); + allobjects.Columns.Add("URN", typeof(string)); + + // RS: Set a temporary DataTable up so we can plug the EnumObjects stuff into it. There is a method + // behind this madness - we can use the Count property of the allobjectsenum DataTable to get a total + // size of the objects in our database. + DataTable allobjectsenum = new DataTable(); + toolStripStatusLabel1.Text = "Enumerating objects in database..."; + Application.DoEvents(); + allobjectsenum = db.EnumObjects(); + + toolStripProgressBar1.Value = 0; + toolStripProgressBar1.Maximum = allobjectsenum.Rows.Count; + toolStripStatusLabel1.Text = "Reading primary objects..."; + Application.DoEvents(); + + // RS: Clear the filter items. + chkScriptAll.Checked = false; + clbSchema.Items.Clear(); + clbType.Items.Clear(); + + // RS: Step through our enumerated DataTable and add them to a final DataTable. There's probably a + // better way of doing this, but I like the fact that this updated the progress bar as it keeps the + // user notified that things are happening. + foreach (DataRow dataRow in allobjectsenum.Rows) + { + toolStripProgressBar1.Value++; + allobjects.Rows.Add(new object[] { false, dataRow[1].ToString(), dataRow[2].ToString(), dataRow[0].ToString(), dataRow[3].ToString() }); + // RS: This is a little chunky, I'm open to suggestions in terms of making it more efficient. All + // it does is populate the clbSchema listbox with unique schema values that aren't system schemas. + if ((!clbSchema.Items.Contains(dataRow[1].ToString())) && (dataRow[1].ToString() != "" && dataRow[1].ToString() != "sys" && dataRow[1].ToString() != "INFORMATION_SCHEMA")) + { + clbSchema.Items.Add(dataRow[1].ToString()); + } + + Application.DoEvents(); + } + + // RS: Disable the schema list if it's empty + if (clbSchema.Items.Count > 0) + { + clbSchema.Enabled = true; + } + else + { + clbSchema.Enabled = false; + } + + // RS: Update the user + toolStripProgressBar1.Value = 0; + toolStripStatusLabel1.Text = "Reading secondary objects..."; + Application.DoEvents(); + + // RS: This is icky, but the only way. Step through triggers on a per table basis and add it to the + // DataTable. NOTE: We don't need to update the clbSchema list box, as the schema that the table + // that "owns" the trigger is inferred on the trigger. I think. Does that make sense to anyone besides + // me? + foreach (Table tbl in db.Tables) + { + foreach (Trigger trg in tbl.Triggers) + { + allobjects.Rows.Add(new object[] { false, tbl.Schema.ToString(), trg.Name.ToString(), "Trigger", trg.Urn.ToString() }); + } + } + + // RS: Set the DataView up based on the allobjects DataTable + allobjectsview = new DataView(allobjects); + + // RS: Large databases can take a few seconds to create the DataView, tell the user what we're doing + toolStripStatusLabel1.Text = "Filtering and sorting..."; + Application.DoEvents(); + + // RS: Filter our system objects + allobjectsview.RowFilter = "([Schema] <> 'INFORMATION_SCHEMA') AND ([Schema] <> 'sys') AND" + + "([Type] IN ('ExtendedStoredProcedure', 'PartitionFunction', 'PartitionScheme', " + + "'SqlAssembly', 'StoredProcedure', 'Table', 'Trigger', 'UserDefinedAggregate', " + + "'UserDefinedDataType', 'UserDefinedFunction', 'UserDefinedType', 'View'))"; + // RS: Sort by the type of object we're dealing with + allobjectsview.Sort = "[Type]"; + + // RS: This is an optional RowFilter that has Users and Schema's in it - but you end up with stuff + // that is Microsoft supplied, and it's really not worth our while adding an entire section that + // iterates through objects and checks their IsSystemSupplied property - because then we'd also need + // to ensure that IsSystemSupplied is part of the default properties that SMO fetches - an altogether + // unnecessary exercise, and one that would noticeably slow SMO down. + + /* allobjects.RowFilter = "([Schema] <> 'INFORMATION_SCHEMA') AND ([Schema] <> 'sys') AND" + + "([Type] IN ('ExtendedStoredProcedure', 'PartitionFunction', 'PartitionScheme', 'Trigger', " + + "'Schema', 'SqlAssembly', 'StoredProcedure', 'Table', 'User', 'UserDefinedAggregate', " + + "'UserDefinedDataType', 'UserDefinedFunction', 'UserDefinedType', 'View'))";*/ + + dgAvailableObjects.DataSource = allobjectsview; + + foreach (DataGridViewRow dgr in dgAvailableObjects.Rows) + { + // RS: Some more chunky clbType populating code...saves us the hassle of having to add it when + // we're populating, as we don't know whether or not we have triggers until later. + if ((!clbType.Items.Contains(dgr.Cells[3].Value.ToString())) && (dgr.Cells[3].Value.ToString() != string.Empty)) + { + clbType.Items.Add(dgr.Cells[3].Value.ToString()); + } + } + + // RS: Disable the Type list if it's empty + if (clbType.Items.Count > 0) + { + clbType.Enabled = true; + } + else + { + clbType.Enabled = false; + } + + // RS: Hide the URN from the DataGrid + dgAvailableObjects.Columns[4].Visible = false; + // RS: Set column widths on the DataGrid + dgAvailableObjects.Columns[0].Width = 50; + dgAvailableObjects.Columns[1].Width = 130; + dgAvailableObjects.Columns[2].Width = 316; + dgAvailableObjects.Columns[3].Width = 200; + toolStripStatusLabel1.Text = "Ready"; + } + + private SqlConnection GetConnection(string databaseName) + { + SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder(); + sqlConnectionStringBuilder.DataSource = txtServerName.Text; + if (chkUseWindowsAuthentication.Checked) + { + sqlConnectionStringBuilder.IntegratedSecurity = true; + } + else + { + sqlConnectionStringBuilder.IntegratedSecurity = false; + sqlConnectionStringBuilder.UserID = txtUsername.Text; + sqlConnectionStringBuilder.Password = txtPassword.Text; + } + + sqlConnectionStringBuilder.InitialCatalog = databaseName; + sqlConnectionStringBuilder.ApplicationName = "Scriptio"; + SqlConnection sqlConnection = new SqlConnection(sqlConnectionStringBuilder.ConnectionString); + return sqlConnection; + } + + private string GetConnectionString(string databaseName) + { + SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder(); + csb.DataSource = txtServerName.Text; + if (chkUseWindowsAuthentication.Checked) + { + csb.IntegratedSecurity = true; + } + else + { + csb.IntegratedSecurity = false; + csb.UserID = txtUsername.Text; + csb.Password = txtPassword.Text; + } + csb.InitialCatalog = databaseName; + csb.ApplicationName = "Scriptio"; + return csb.ConnectionString; + } + + private void DdlDatabases_SelectedIndexChanged(object sender, EventArgs e) + { + ComboBox comboxBox = (ComboBox)sender; + chkScriptAll.Checked = false; + if (comboxBox.SelectedIndex > 0) + { + PopulateObjects(txtServerName.Text, comboxBox.SelectedItem.ToString()); + } + else + { + dgAvailableObjects.Rows.Clear(); + } + } + + private void btnScript_Click(object sender, EventArgs e) + { + // RS: This section has also been heavily modified and rewritten to use the Scripter object instead of + // iterating through predefined objects and using their .Script method. This gives us the added + // flexibility of being able to populate the allobjects DataTable with ANY object that has a valid + // URN, and the code will script it. + toolStripStatusLabel1.Text = "Preparing script..."; + Application.DoEvents(); + + Server srv; + if (chkUseWindowsAuthentication.Checked) + { + srv = new Server(txtServerName.Text); + } + else + { + srv = new Server(new ServerConnection(txtServerName.Text, txtUsername.Text, txtPassword.Text)); + } + + string objectType = ""; + string objectName = ""; + string schema = ""; + txtResult.Text = ""; + + result = new StringBuilder(); + + // RS: Instead of stepping through the dataset to see what's checked, we just use a DataView to limit + // the rows to only those that have the Script column equal to true. + DataView allobjectschecked = new DataView(allobjects); + // RS: Filter our system objects + allobjectschecked.RowFilter = "([Schema] <> 'INFORMATION_SCHEMA') AND ([Schema] <> 'sys') AND" + + "([Type] IN ('ExtendedStoredProcedure', 'PartitionFunction', 'PartitionScheme', " + + "'SqlAssembly', 'StoredProcedure', 'Table', 'Trigger', 'UserDefinedAggregate', " + + "'UserDefinedDataType', 'UserDefinedFunction', 'UserDefinedType', 'View')) " + + "AND [Script] = True"; + + dgAvailableObjects.EndEdit(); + // RS: We use the DataView's count property rather than the deprecated function from the previous + // version of Scriptio. + int totalObjects = allobjectschecked.Count; + toolStripProgressBar1.Value = 0; + toolStripProgressBar1.Maximum = totalObjects; + result.EnsureCapacity(totalObjects * 4000); + + // Delete the file if it already exists + if (File.Exists(txtSaveLocation.Text)) + { + File.Delete(txtSaveLocation.Text); + } + + ScriptingOptions baseOptions = new ScriptingOptions(); + baseOptions.IncludeHeaders = chkIncludeHeaders.Checked; + baseOptions.Indexes = chkIndexes.Checked; + baseOptions.DriAllKeys = chkKeys.Checked; + baseOptions.NoCollation = !chkCollation.Checked; + baseOptions.SchemaQualify = chkSchemaQualifyCreates.Checked; + baseOptions.SchemaQualifyForeignKeysReferences = chkSchemaQualifyFK.Checked; + baseOptions.Permissions = chkPermissions.Checked; + + if (rdoOneFile.Checked || rdoOnePerObject.Checked) + { + baseOptions.FileName = txtSaveLocation.Text; + baseOptions.AppendToFile = true; + } + + ScriptingOptions dropOptions = new ScriptingOptions(); + dropOptions.ScriptDrops = true; + dropOptions.IncludeIfNotExists = chkExistance.Checked; + dropOptions.SchemaQualify = chkSchemaQualifyDrops.Checked; + + // RS: Set the encoding options for both the drop AND the base scripting options object. We have to + // do it on both, otherwise we have two different encodings in the same file, and we end up with a + // complete mess. + if (chkGenerateASCII.Checked) + { + dropOptions.Encoding = Encoding.ASCII; + baseOptions.Encoding = Encoding.ASCII; + } + else + { + dropOptions.Encoding = Encoding.Unicode; + baseOptions.Encoding = Encoding.Unicode; + } + + // RS: Set the Scripter object up based on the connection to the server - the need for a Database + // object is deprecated. + Scripter scriptit = new Scripter(srv); + // RS: Setup a URN object - this doesn't work quite the way I expected it to, but I managed to find a + // code sample that had the index references. Now I understand it:) + Urn[] scripturn = new Urn[1]; + + if (rdoOneFile.Checked || rdoOnePerObject.Checked) + { + dropOptions.FileName = txtSaveLocation.Text; + dropOptions.AppendToFile = true; + } + + // process each checked object + foreach (DataRowView row in allobjectschecked) + { + toolStripProgressBar1.Value++; + + objectType = row[3].ToString(); + objectName = row[2].ToString(); + schema = row[1].ToString(); + string fileName = ""; + + if (rdoOnePerObject.Checked) + { + // RS: Set the filename up based on whether we're using the static .sql extension, or the + // more dynamic SQL 2000 file extensions + if (chkNamingConventions.Checked) + { + switch (objectType) + { + case "StoredProcedure": + if (schema.Length > 0) + { + fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".prc"); + } + else + { + fileName = Path.Combine(txtSaveLocation.Text, objectName + ".prc"); + } + + break; + + case "UserDefinedFunction": + if (schema.Length > 0) + { + fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".udf"); + } + else + { + fileName = Path.Combine(txtSaveLocation.Text, objectName + ".udf"); + } + + break; + + case "View": + if (schema.Length > 0) + { + fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".viw"); + } + else + { + fileName = Path.Combine(txtSaveLocation.Text, objectName + ".viw"); + } + + break; + + case "Table": + if (schema.Length > 0) + { + fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".tab"); + } + else + { + fileName = Path.Combine(txtSaveLocation.Text, objectName + ".tab"); + } + + break; + + case "Trigger": + if (schema.Length > 0) + { + fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".trg"); + } + else + { + fileName = Path.Combine(txtSaveLocation.Text, objectName + ".trg"); + } + + break; + + default: + if (schema.Length > 0) + { + fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".sql"); + } + else + { + fileName = Path.Combine(txtSaveLocation.Text, objectName + ".sql"); + } + + break; + } + } + else + { + if (schema.Length > 0) + { + fileName = Path.Combine(txtSaveLocation.Text, schema + "." + objectName + ".sql"); + } + else + { + fileName = Path.Combine(txtSaveLocation.Text, objectName + ".sql"); + } + } + + if (File.Exists(fileName)) + { + File.Delete(fileName); + } + + baseOptions.FileName = fileName; + dropOptions.FileName = fileName; + } + + // RS: Tell the user what object we're scripting so they know when they hit a large object. + if (schema.Length > 0) + { + toolStripStatusLabel1.Text = $"Scripting: {schema}.{objectName}..."; + } + else + { + toolStripStatusLabel1.Text = $"Scripting: {objectName}..."; + } + + // RS: Run DoEvents() *before* we start the scripting, so the user sees the update above. + Application.DoEvents(); + + // RS: Set the URN object equal to the URN string. + scripturn[0] = row[4].ToString(); + + if (chkDrop.Checked) + { + // RS: Set the Scripter options, as we don't pass it when we call the Script method. + scriptit.Options = dropOptions; + // RS: Call the Script method, and pass the URN. + AddLines(scriptit.Script(scripturn)); + AddGo(); + } + + if (chkCreate.Checked) + { + // RS: As per above + scriptit.Options = baseOptions; + AddLines(scriptit.Script(scripturn)); + AddGo(); + } + } + + txtResult.MaxLength = result.Length + 100; + txtResult.Text = result.ToString(); + toolStripStatusLabel1.Text = "Ready"; + tabControl1.SelectedTab = tabResult; + // RS: Null our scripting objects (not necessary, but I like it) + scriptit = null; + scripturn = null; + allobjectschecked.RowFilter = ""; + Application.DoEvents(); + } + + private void AddLines(StringCollection strings) + { + foreach (string s in strings) + { + result.Append(Environment.NewLine + s); + + if (s.StartsWith("SET QUOTED_IDENTIFIER") || s.StartsWith("SET ANSI_NULLS")) + result.Append(Environment.NewLine + "GO"); + } + } + + private void AddGo() + { + result.Append(Environment.NewLine + "GO" + Environment.NewLine + Environment.NewLine); + } + + private void ChkScriptAll_CheckedChanged(object sender, EventArgs e) + { + CheckBox checkbox = (CheckBox)sender; + foreach (DataGridViewRow row in dgAvailableObjects.Rows) + { + row.Cells[0].Value = checkbox.Checked; + } + } + + private void BtnPickDirectory_Click(object sender, EventArgs e) + { + if (rdoOneFile.Checked) + { + saveFileDialog1.ShowDialog(); + txtSaveLocation.Text = saveFileDialog1.FileName.ToString(); + } + + if (rdoOnePerObject.Checked) + { + folderBrowserDialog1.ShowDialog(); + txtSaveLocation.Text = folderBrowserDialog1.SelectedPath.ToString(); + } + } + + private void RdoOneFile_CheckedChanged(object sender, EventArgs e) + { + txtSaveLocation.Text = string.Empty; + chkNamingConventions.Enabled = false; + } + + private void RdoNoFiles_CheckedChanged(object sender, EventArgs e) + { + txtSaveLocation.Text = ""; + chkNamingConventions.Enabled = false; + } + + private void RdoOnePerObject_CheckedChanged(object sender, EventArgs e) + { + txtSaveLocation.Text = ""; + chkNamingConventions.Enabled = true; + } + + private void BtnCopyClipboard_Click(object sender, EventArgs e) + { + txtResult.SelectAll(); + txtResult.Copy(); + } + + private void ChkUseWindowsAuthentication_CheckedChanged(object sender, EventArgs e) + { + CheckBox c = (CheckBox)sender; + if (c.Checked) + { + txtUsername.Enabled = false; + txtPassword.Enabled = false; + } + else + { + txtUsername.Enabled = true; + txtPassword.Enabled = true; + } + } + + private void BtnSaveAs_Click(object sender, EventArgs e) + { + // RS: New code to save the scripted output. + if (saveFileDialog1.ShowDialog() == DialogResult.OK) + { + // RS: Use a StreamWriter, and push each line of resultant text into it. + StreamWriter sw; + // RS: Make sure our StreamWriter's encoding is configured based on the user's options + Encoding encoding; + encoding = chkGenerateASCII.Checked ? Encoding.ASCII : Encoding.Unicode; + sw = new StreamWriter(saveFileDialog1.FileName, false, encoding); + //if (chkGenerateASCII.Checked) + //{ + // sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.ASCII); + //} + //else + //{ + // sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.Unicode); + //} + + foreach (string str in txtResult.Lines) + { + sw.WriteLine(str); + } + + sw.Close(); + } + } + + private void Scriptio_Load(object sender, EventArgs e) + { + // RS: If we're building a debug build, set the server name to localhost and populate the database + // list - saves us the hassle if we're testing. Change this as necessary. +#if (DEBUG) + txtServerName.Text = @"localhost"; + PopulateDatabases(txtServerName.Text); +#endif + } + + private void ClbType_SelectedIndexChanged(object sender, EventArgs e) + { + foreach (DataRow dataRow in allobjects.Rows) + { + // RS: Run throught the DataGrid and check anything that's been checked in the Type list + if (clbType.CheckedItems.Contains(dataRow[3].ToString())) + { + dataRow[0] = true; + } + else + { + dataRow[0] = false; + } + } + } + + private void ClbSchema_SelectedIndexChanged(object sender, EventArgs e) + { + foreach (DataRow dataRow in allobjects.Rows) + { + // RS: Run throught the DataGrid and check anything that's been checked in the Type list + if (clbSchema.CheckedItems.Contains(dataRow[1].ToString())) + { + dataRow[0] = true; + } + else + { + dataRow[0] = false; + } + } + } + } +} \ No newline at end of file diff --git a/Scriptio/FormMain.resx b/Scriptio/FormMain.resx new file mode 100644 index 0000000..50db47a --- /dev/null +++ b/Scriptio/FormMain.resx @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 127, 17 + + + 255, 17 + + + 413, 17 + + + + + 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 + AD8AAAD/4AAB//AAA//wAAf/+EAP///4H/8= + + + \ No newline at end of file diff --git a/Scriptio/Program.cs b/Scriptio/Program.cs new file mode 100644 index 0000000..e4713aa --- /dev/null +++ b/Scriptio/Program.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace Scriptio +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Scriptio()); + } + } +} \ No newline at end of file diff --git a/Scriptio/Properties/AssemblyInfo.cs b/Scriptio/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2abb8c9 --- /dev/null +++ b/Scriptio/Properties/AssemblyInfo.cs @@ -0,0 +1,52 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Scriptio - Script SQL Server 2005 objects +// Copyright (C) 2005 Bill Graziano + +// This program 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 2 of the License, or +// (at your option) any later version. + +// This program 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 this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +/////////////////////////////////////////////////////////////////////////////////////////////// + +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Scriptio")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("SQLTeam.com")] +[assembly: AssemblyProduct("Scriptio")] +[assembly: AssemblyCopyright("Copyright © 2006 Bill Graziano, 2008 Riccardo Spagni")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("be300a5a-d1e8-47b2-aa98-9be9d6647ff5")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("0.6.1.0")] +[assembly: AssemblyFileVersion("0.6.1.0")] diff --git a/Scriptio/Properties/Resources.Designer.cs b/Scriptio/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ab74091 --- /dev/null +++ b/Scriptio/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +namespace Scriptio.Properties { + using System; + + + /// + /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées. + /// + // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder + // à l'aide d'un outil, tel que ResGen ou Visual Studio. + // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen + // avec l'option /str ou régénérez votre projet VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Scriptio.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Remplace la propriété CurrentUICulture du thread actuel pour toutes + /// les recherches de ressources à l'aide de cette classe de ressource fortement typée. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Scriptio/Properties/Resources.resx b/Scriptio/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Scriptio/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Scriptio/Properties/Settings.Designer.cs b/Scriptio/Properties/Settings.Designer.cs new file mode 100644 index 0000000..10b8b67 --- /dev/null +++ b/Scriptio/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Ce code a été généré par un outil. +// Version du runtime :4.0.30319.42000 +// +// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si +// le code est régénéré. +// +//------------------------------------------------------------------------------ + +namespace Scriptio.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Scriptio/Properties/Settings.settings b/Scriptio/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Scriptio/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Scriptio/Properties/app.manifest b/Scriptio/Properties/app.manifest new file mode 100644 index 0000000..c212930 --- /dev/null +++ b/Scriptio/Properties/app.manifest @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Scriptio/Scriptio.csproj b/Scriptio/Scriptio.csproj new file mode 100644 index 0000000..5297607 --- /dev/null +++ b/Scriptio/Scriptio.csproj @@ -0,0 +1,338 @@ + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {D00DC776-3386-4146-9AD8-8408FA0F5FD7} + WinExe + Properties + Scriptio + Scriptio + Scriptio.Program + LocalIntranet + true + false + 9412EB75522B8E2E99789CAAA0866DF4D172210C + Scriptio_1_TemporaryKey.pfx + false + wi0054-48.ico + http://timestamp.verisign.com/scripts/timstamp.dll + + + + + 3.5 + c:\temp\ + true + Disk + false + Background + 30 + Days + true + false + true + http://weblogs.sqlteam.com/billg/archive/2005/11/22/8414.aspx + Scriptio + SQLTeam.com + false + default.htm + 4 + 0.5.5.%2a + false + true + v4.8 + + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + ..\packages\Azure.Core.1.6.0\lib\net461\Azure.Core.dll + + + ..\packages\Azure.Identity.1.3.0\lib\netstandard2.0\Azure.Identity.dll + + + ..\packages\Microsoft.Bcl.AsyncInterfaces.1.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll + + + + ..\packages\Microsoft.Data.SqlClient.3.0.0\lib\net461\Microsoft.Data.SqlClient.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.Data.Tools.Sql.BatchParser.dll + + + ..\packages\Microsoft.Identity.Client.4.22.0\lib\net461\Microsoft.Identity.Client.dll + + + ..\packages\Microsoft.Identity.Client.Extensions.Msal.2.16.5\lib\net45\Microsoft.Identity.Client.Extensions.Msal.dll + + + ..\packages\Microsoft.IdentityModel.JsonWebTokens.6.8.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll + + + ..\packages\Microsoft.IdentityModel.Logging.6.8.0\lib\net461\Microsoft.IdentityModel.Logging.dll + + + ..\packages\Microsoft.IdentityModel.Protocols.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.dll + + + ..\packages\Microsoft.IdentityModel.Protocols.OpenIdConnect.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll + + + ..\packages\Microsoft.IdentityModel.Tokens.6.8.0\lib\net461\Microsoft.IdentityModel.Tokens.dll + + + ..\packages\Microsoft.SqlServer.Assessment.1.0.305\lib\net462\Microsoft.SqlServer.Assessment.dll + + + ..\packages\Microsoft.SqlServer.Assessment.Authoring.1.0.282\lib\net462\Microsoft.SqlServer.Assessment.Types.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.ConnectionInfo.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Dmf.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Dmf.Common.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.Assessment.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.Collector.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.CollectorEnum.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.HadrData.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.HadrModel.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.RegisteredServers.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.Sdk.Sfc.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.SqlScriptPublish.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEvent.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEventDbScoped.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEventDbScopedEnum.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Management.XEventEnum.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.PolicyEnum.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.RegSvrEnum.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.ServiceBrokerEnum.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Smo.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.Smo.Notebook.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SmoExtended.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SqlClrProvider.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SqlEnum.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.SqlWmiManagement.dll + + + ..\packages\Microsoft.SqlServer.SqlManagementObjects.161.46437.65\lib\net462\Microsoft.SqlServer.WmiEnum.dll + + + ..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll + + + + ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + + ..\packages\System.Configuration.ConfigurationManager.4.7.0\lib\net461\System.Configuration.ConfigurationManager.dll + + + + + + + ..\packages\System.Diagnostics.DiagnosticSource.4.6.0\lib\net46\System.Diagnostics.DiagnosticSource.dll + + + + + ..\packages\System.IdentityModel.Tokens.Jwt.6.8.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll + + + ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll + + + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.6.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll + + + + ..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll + + + ..\packages\System.Security.Cryptography.ProtectedData.4.5.0\lib\net461\System.Security.Cryptography.ProtectedData.dll + + + ..\packages\System.Security.Permissions.4.7.0\lib\net461\System.Security.Permissions.dll + + + ..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll + + + + ..\packages\System.Text.Encodings.Web.4.7.2\lib\net461\System.Text.Encodings.Web.dll + + + ..\packages\System.Text.Json.4.6.0\lib\net461\System.Text.Json.dll + + + ..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll + + + + ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll + + + + + + + + + Form + + + AboutForm.cs + + + Form + + + FormMain.cs + + + + + True + True + Settings.settings + + + Designer + AboutForm.cs + + + Designer + FormMain.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + False + .NET Framework 2.0 %28x86%29 + true + + + False + .NET Framework 3.0 %28x86%29 + false + + + False + .NET Framework 3.5 + false + + + + + + + + + + + + Ce projet fait référence à des packages NuGet qui sont manquants sur cet ordinateur. Utilisez l'option de restauration des packages NuGet pour les télécharger. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkID=322105. Le fichier manquant est : {0}. + + + + + \ No newline at end of file diff --git a/Scriptio/app.config b/Scriptio/app.config new file mode 100644 index 0000000..ae7bddd --- /dev/null +++ b/Scriptio/app.config @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Scriptio/fr0004/gif/wi0054-16.gif b/Scriptio/fr0004/gif/wi0054-16.gif new file mode 100644 index 0000000..73a70aa Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-16.gif differ diff --git a/Scriptio/fr0004/gif/wi0054-24.gif b/Scriptio/fr0004/gif/wi0054-24.gif new file mode 100644 index 0000000..79d9407 Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-24.gif differ diff --git a/Scriptio/fr0004/gif/wi0054-32.gif b/Scriptio/fr0004/gif/wi0054-32.gif new file mode 100644 index 0000000..c89ec61 Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-32.gif differ diff --git a/Scriptio/fr0004/gif/wi0054-48.gif b/Scriptio/fr0004/gif/wi0054-48.gif new file mode 100644 index 0000000..c902f48 Binary files /dev/null and b/Scriptio/fr0004/gif/wi0054-48.gif differ diff --git a/Scriptio/fr0004/ico-32bit/wi0054-16.ico b/Scriptio/fr0004/ico-32bit/wi0054-16.ico new file mode 100644 index 0000000..5169125 Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-16.ico differ diff --git a/Scriptio/fr0004/ico-32bit/wi0054-24.ico b/Scriptio/fr0004/ico-32bit/wi0054-24.ico new file mode 100644 index 0000000..fc2cfe8 Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-24.ico differ diff --git a/Scriptio/fr0004/ico-32bit/wi0054-32.ico b/Scriptio/fr0004/ico-32bit/wi0054-32.ico new file mode 100644 index 0000000..2692985 Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-32.ico differ diff --git a/Scriptio/fr0004/ico-32bit/wi0054-48.ico b/Scriptio/fr0004/ico-32bit/wi0054-48.ico new file mode 100644 index 0000000..a7b099f Binary files /dev/null and b/Scriptio/fr0004/ico-32bit/wi0054-48.ico differ diff --git a/Scriptio/fr0004/ico-8bit/wi0054-16.ico b/Scriptio/fr0004/ico-8bit/wi0054-16.ico new file mode 100644 index 0000000..6f5782e Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-16.ico differ diff --git a/Scriptio/fr0004/ico-8bit/wi0054-24.ico b/Scriptio/fr0004/ico-8bit/wi0054-24.ico new file mode 100644 index 0000000..314a1cc Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-24.ico differ diff --git a/Scriptio/fr0004/ico-8bit/wi0054-32.ico b/Scriptio/fr0004/ico-8bit/wi0054-32.ico new file mode 100644 index 0000000..8aea47c Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-32.ico differ diff --git a/Scriptio/fr0004/ico-8bit/wi0054-48.ico b/Scriptio/fr0004/ico-8bit/wi0054-48.ico new file mode 100644 index 0000000..7d71c47 Binary files /dev/null and b/Scriptio/fr0004/ico-8bit/wi0054-48.ico differ diff --git a/Scriptio/fr0004/png/wi0054-16.png b/Scriptio/fr0004/png/wi0054-16.png new file mode 100644 index 0000000..51fe701 Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-16.png differ diff --git a/Scriptio/fr0004/png/wi0054-24.png b/Scriptio/fr0004/png/wi0054-24.png new file mode 100644 index 0000000..c2b9b62 Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-24.png differ diff --git a/Scriptio/fr0004/png/wi0054-32.png b/Scriptio/fr0004/png/wi0054-32.png new file mode 100644 index 0000000..1a88fc8 Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-32.png differ diff --git a/Scriptio/fr0004/png/wi0054-48.png b/Scriptio/fr0004/png/wi0054-48.png new file mode 100644 index 0000000..55064a9 Binary files /dev/null and b/Scriptio/fr0004/png/wi0054-48.png differ diff --git a/Scriptio/icon.txt b/Scriptio/icon.txt new file mode 100644 index 0000000..796de23 --- /dev/null +++ b/Scriptio/icon.txt @@ -0,0 +1,3 @@ +The icon used here was downloaded from http://www.icongalore.com/software-icons/free-icons.htm. + +It is listed as a free icon and usable for non-commercial applications. \ No newline at end of file diff --git a/Scriptio/license.txt b/Scriptio/license.txt new file mode 100644 index 0000000..ba04e2f --- /dev/null +++ b/Scriptio/license.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program 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 2 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Scriptio/packages.config b/Scriptio/packages.config new file mode 100644 index 0000000..14bff18 --- /dev/null +++ b/Scriptio/packages.config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Scriptio/wi0054-32.ico b/Scriptio/wi0054-32.ico new file mode 100644 index 0000000..2692985 Binary files /dev/null and b/Scriptio/wi0054-32.ico differ diff --git a/Scriptio/wi0054-48.ico b/Scriptio/wi0054-48.ico new file mode 100644 index 0000000..a7b099f Binary files /dev/null and b/Scriptio/wi0054-48.ico differ