1
0
mirror of https://github.com/alex-bochkov/ssms-addin.git synced 2026-06-15 16:57:06 +02:00

new version

This commit is contained in:
Alex Bochkov
2017-09-17 11:33:41 -07:00
parent 4274f726b9
commit c7464ad3ee
20 changed files with 1571 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.15
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Addin.SSMS2017", "Addin.SSMS2017\Addin.SSMS2017.vbproj", "{4F34CDCB-BE07-49A3-B3EF-7E190BE72CA7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4F34CDCB-BE07-49A3-B3EF-7E190BE72CA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F34CDCB-BE07-49A3-B3EF-7E190BE72CA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F34CDCB-BE07-49A3-B3EF-7E190BE72CA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F34CDCB-BE07-49A3-B3EF-7E190BE72CA7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FA2E3C31-D449-4B38-B7A3-98B83BD2F266}
EndGlobalSection
EndGlobal
+198
View File
@@ -0,0 +1,198 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props')" />
<PropertyGroup>
<MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>14.0</OldToolsVersion>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<SchemaVersion>2.0</SchemaVersion>
<ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
<ProjectGuid>{4F34CDCB-BE07-49A3-B3EF-7E190BE72CA7}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Addin.SSMS2017</RootNamespace>
<AssemblyName>Addin.SSMS2017</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<GeneratePkgDefFile>false</GeneratePkgDefFile>
<IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer>
<IncludeDebugSymbolsInVSIXContainer>true</IncludeDebugSymbolsInVSIXContainer>
<IncludeDebugSymbolsInLocalVSIXDeployment>true</IncludeDebugSymbolsInLocalVSIXDeployment>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
<CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>
<OptionStrict>Off</OptionStrict>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355</NoWarn>
<CopyVsixExtensionFiles>True</CopyVsixExtensionFiles>
<CopyVsixExtensionLocation>C:\Program Files %28x86%29\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\Extensions\</CopyVsixExtensionLocation>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<ErrorReport>prompt</ErrorReport>
<NoWarn>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355</NoWarn>
</PropertyGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="SettingFormUI.Designer.vb">
<DependentUpon>SettingFormUI.vb</DependentUpon>
</Compile>
<Compile Include="SettingFormUI.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="SettingManager.vb" />
<Compile Include="SSMSAddin.vb" />
<Compile Include="SSMSAddinFactory.vb" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\sql-icon.png" />
<Content Include="Resources\excel-icon.png" />
<Content Include="Resources\format.png" />
<Content Include="Resources\refresh-icon.png" />
<Content Include="Resources\settings-icon.png" />
<None Include="source.extension.vsixmanifest">
<SubType>Designer</SubType>
</None>
<Content Include="stylesheet.css" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Build.Framework" />
<Reference Include="Microsoft.SqlServer.TransactSql.ScriptDom, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\Extensions\Application\Microsoft.SqlServer.TransactSql.ScriptDom.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.CoreUtility, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.VisualStudio.CoreUtility.14.3.25407\lib\net45\Microsoft.VisualStudio.CoreUtility.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.Text.Data, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.VisualStudio.Text.Data.14.3.25407\lib\net45\Microsoft.VisualStudio.Text.Data.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.Text.Logic, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.VisualStudio.Text.Logic.14.3.25407\lib\net45\Microsoft.VisualStudio.Text.Logic.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.Text.UI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.VisualStudio.Text.UI.14.3.25407\lib\net45\Microsoft.VisualStudio.Text.UI.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.VisualStudio.Text.UI.Wpf, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.VisualStudio.Text.UI.Wpf.14.3.25407\lib\net45\Microsoft.VisualStudio.Text.UI.Wpf.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="SqlPackageBase">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\SqlPackageBase.dll</HintPath>
</Reference>
<Reference Include="SqlWorkbench.Interfaces">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\SqlWorkbench.Interfaces.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.6.1 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="SettingFormUI.resx">
<DependentUpon>SettingFormUI.vb</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Service Include="{94E38DFF-614B-4CBD-B67C-F211BB35CE8B}" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.targets" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.targets')" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
+34
View File
@@ -0,0 +1,34 @@
Imports Microsoft.VisualBasic
Imports System.Reflection
Imports System.Runtime.CompilerServices
Imports 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("VSIXProject1")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyConfiguration("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("VSIXProject1")>
<Assembly: AssemblyCopyright("")>
<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)>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' [assembly: AssemblyVersion("1.0.*")]
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>
+73
View File
@@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Addin.SSMS2017.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property sql_icon() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("sql-icon", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
End Module
End Namespace
+124
View File
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="sql-icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\sql-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

+395
View File
@@ -0,0 +1,395 @@
''------------------------------------------------------------------------------
'' <copyright file="SSMSAddin.vb" company="Company">
'' Copyright (c) Company. All rights reserved.
'' </copyright>
''------------------------------------------------------------------------------
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.IO
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media.Imaging
'Imports EnvDTE
Imports Microsoft.SqlServer.Management.UI.VSIntegration
Imports Microsoft.SqlServer.TransactSql.ScriptDom
Imports Microsoft.VisualStudio.Text.Editor
''' <summary>
''' Margin's canvas and visual definition including both size and content
''' </summary>
Friend NotInheritable Class SSMSAddin
Inherits Canvas
Implements IWpfTextViewMargin
''' <summary>
''' The name of the margin
''' </summary>
Public Const MarginName As String = "SSMSAddin"
''' <summary>
''' A value indicating whether the object is disposed
''' </summary>
Private isDisposed As Boolean
Dim textViewRef As IWpfTextView
Dim MainMenu As New Menu
Dim TemplatesMenuId = 0
Private TemplatesList As Hashtable = New Hashtable
''' <summary>
''' Initializes a new instance of the <see cref="SSMSAddin"/> class for a given <paramref name="textView"/>.
''' </summary>
''' <param name="textView">The <see cref="IWpfTextView"/> to attach the margin to.</param>
Public Sub New(ByVal textView As IWpfTextView)
textViewRef = textView
' Margin height sufficient to have the label.
Me.Height = 16
'Me.ClipToBounds = True
'Me.Background = New SolidColorBrush(Colors.LightGreen)
'' Add a green colored label that says "Hello SSMSAddin"
'Dim label As New Label With {
' .Background = New SolidColorBrush(Colors.LightGreen),
' .Content = "Hello SSMSAddin"
'}
'Me.Children.Add(label)
'Dim MainToolBar = New ToolBar
'Dim buttonF As New Button With {.Content = "Format"}
'AddHandler buttonF.Click, AddressOf ButtonFormat_Click
'MainToolBar.Items.Add(buttonF)
'Dim buttonE As New Button With {.Content = "ExportToExcel"}
'AddHandler buttonE.Click, AddressOf ButtonExportToExcel_Click
'MainToolBar.Items.Add(buttonE)
'Dim SubMenu As New Menu
'Dim ObjImage As Image = New Image()
'Dim Path = "C:\Users\Alex\Documents\Visual Studio 2015\Projects\VSIXProject1\VSIXProject1\Resources\settings-icon.png" 'My.Application.Info.DirectoryPath() + "\Resources\setting-icon.png"
'ObjImage.Source = New BitmapImage(New Uri(Path, UriKind.RelativeOrAbsolute))
Dim SubMenuItem1 As New MenuItem With {.Header = "Settings"}
AddHandler SubMenuItem1.Click, AddressOf ButtonSettings_Click
'SubMenuItem1.Icon = ObjImage
Dim SubMenuItem2 As New MenuItem With {.Header = "Format SQL"}
AddHandler SubMenuItem2.Click, AddressOf ButtonFormat_Click
Dim SubMenuItem3 As New MenuItem With {.Header = "Export To Excel"}
AddHandler SubMenuItem3.Click, AddressOf ButtonExportToExcel_Click
Dim SubMenuItem4 As New MenuItem With {.Header = "Templates"}
'''SubMenuItem4.Icon = New BitmapImage(New Uri("resources/sql-icon.png", UriKind.Relative))
MainMenu = New Menu
MainMenu.IsMainMenu = True
MainMenu.Items.Add(SubMenuItem2)
MainMenu.Items.Add(SubMenuItem3)
TemplatesMenuId = MainMenu.Items.Add(SubMenuItem4)
MainMenu.Items.Add(SubMenuItem1)
Me.Children.Add(MainMenu)
RefreshTemplatesList()
End Sub
Private Sub ButtonRefreshTemplates_Click(sender As Object, e As System.EventArgs)
RefreshTemplatesList()
End Sub
Sub RefreshTemplatesList()
Dim MenuTemplates As MenuItem = MainMenu.Items(TemplatesMenuId)
MenuTemplates.Items.Clear()
Dim TemplatesList = New Hashtable
Dim Folder = SettingManager.GetTemplatesFolder()
If Not String.IsNullOrEmpty(Folder) Then
Dim i = 1
FillTemplates(MenuTemplates, Folder, i)
MenuTemplates.Header = "Templates (" + i.ToString + ")"
End If
MenuTemplates.Items.Add(New Separator)
Dim SubMenuItem41 As New MenuItem With {.Header = "Refresh templates list"}
AddHandler SubMenuItem41.Click, AddressOf ButtonRefreshTemplates_Click
MenuTemplates.Items.Add(SubMenuItem41)
End Sub
Sub FillTemplates(ByRef SubMenuItem As MenuItem, Folder As String, ByRef i As Integer)
Dim Dirs = My.Computer.FileSystem.GetDirectories(Folder)
For Each DirStr In Dirs
Dim DI = My.Computer.FileSystem.GetFileInfo(DirStr)
Dim NewSubMenuItem As New MenuItem
NewSubMenuItem.Header = DI.Name
SubMenuItem.Items.Add(NewSubMenuItem)
FillTemplates(NewSubMenuItem, DirStr, i)
i = i + 1
Next
Dim Files = My.Computer.FileSystem.GetFiles(Folder)
For Each File In Files
Dim FI = My.Computer.FileSystem.GetFileInfo(File)
Dim NewSubMenuItem As New MenuItem
NewSubMenuItem.Header = FI.Name
NewSubMenuItem.Tag = FI.FullName
AddHandler NewSubMenuItem.Click, AddressOf ButtonTemplates_Click
Dim id = SubMenuItem.Items.Add(NewSubMenuItem)
'TemplatesList.Add(id, FI.FullName)
i = i + 1
Next
End Sub
Private Sub ButtonSettings_Click(sender As Object, e As System.EventArgs)
Dim S = New SettingFormUI
S.ShowDialog()
End Sub
Private Sub ButtonFormat_Click(sender As Object, e As System.EventArgs)
Dim title = "Format TSQL"
Try
Dim Spans = textViewRef.Selection.SelectedSpans
If Spans.Count > 1 Then
System.Windows.MessageBox.Show("Multu-span selection is not supported")
Return
ElseIf Spans.Count = 0 Then
Return
End If
Dim Span = Spans.Item(0)
Dim StartPosition = Span.Start.Position
Dim OldStr = textViewRef.TextSnapshot.GetText(Span)
Dim SqlParser As TSqlParser = Nothing
Dim TargetVersion As String = SettingManager.GetTSQLFormatVersion()
If TargetVersion = "2008" Then
SqlParser = New TSql100Parser(False)
ElseIf TargetVersion = "2012" Then
SqlParser = New TSql110Parser(False)
ElseIf TargetVersion = "2014" Then
SqlParser = New TSql120Parser(False)
ElseIf TargetVersion = "2016" Then
SqlParser = New TSql130Parser(False)
ElseIf TargetVersion = "2017" Then
SqlParser = New TSql140Parser(False)
Else
SqlParser = New TSql130Parser(False)
End If
Dim parseErrors As IList(Of ParseError) = New List(Of ParseError)
Dim result As TSqlFragment = SqlParser.Parse(New StringReader(OldStr), parseErrors)
If parseErrors.Count > 0 Then
Dim ErrorStr = ""
For Each StrError In parseErrors
ErrorStr = ErrorStr + Environment.NewLine + StrError.Message
Next
Throw New System.Exception("TSql120Parser unable format selected T-SQL due to a syntax error." + Environment.NewLine + ErrorStr)
End If
textViewRef.TextBuffer.Delete(Span)
Dim StrAdd2 = ""
Dim Gen As SqlScriptGenerator = Nothing
If TargetVersion = "2008" Then
Gen = New Sql100ScriptGenerator
ElseIf TargetVersion = "2012" Then
Gen = New Sql110ScriptGenerator
ElseIf TargetVersion = "2014" Then
Gen = New Sql120ScriptGenerator
ElseIf TargetVersion = "2016" Then
Gen = New Sql130ScriptGenerator
ElseIf TargetVersion = "2017" Then
Gen = New Sql140ScriptGenerator
Else
Gen = New Sql130ScriptGenerator
End If
Gen.Options.IncludeSemicolons = False
Gen.Options.AlignClauseBodies = False
Gen.GenerateScript(result, StrAdd2)
textViewRef.TextBuffer.Insert(StartPosition, StrAdd2.Trim)
Catch ex As Exception
System.Windows.MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub ButtonExportToExcel_Click(sender As Object, e As System.EventArgs)
System.Windows.MessageBox.Show("Click ButtonExportToExcel_Click")
End Sub
Private Sub ButtonTemplates_Click(sender As Object, e As System.EventArgs)
Dim Tag As String = sender.Tag
If Not String.IsNullOrEmpty(Tag) Then
Dim Text = My.Computer.FileSystem.ReadAllText(Tag)
If Not String.IsNullOrEmpty(Text) Then
'Dim i = textViewRef.Selection.Start.Position.
'Dim j = textViewRef.Selection.End.Position.Position
'textViewRef.TextBuffer.Delete()
'If Not txt.Selection.IsEmpty Then txt.Selection.Delete()
Dim Spans = textViewRef.Selection.SelectedSpans
For Each Span In Spans
textViewRef.TextBuffer.Delete(Span)
Next
Dim i = textViewRef.Selection.ActivePoint.Position.Position
textViewRef.TextBuffer.Insert(i, Text)
End If
End If
End Sub
Private Sub SubMenuItem_Click(sender As Object, e As System.EventArgs)
System.Windows.MessageBox.Show("Click SubMenuItem_Click")
End Sub
#Region "IWpfTextViewMargin"
''' <summary>
''' The <see cref="Sytem.Windows.FrameworkElement"/> that implements the visual representation
''' of the margin.
''' </summary>
Public ReadOnly Property VisualElement() As FrameworkElement Implements IWpfTextViewMargin.VisualElement
' Since this margin implements Canvas, this is the object which renders
' the margin.
Get
ThrowIfDisposed()
Return Me
End Get
End Property
#End Region
#Region "ITextViewMargin"
''' <summary>
''' Gets the size of the margin.
''' </summary>
''' <remarks>
''' For a horizontal margin this Is the height of the margin,
''' since the width will be determined by the <see cref="ITextView"/>.
''' For a vertical margin this Is the width of the margin,
''' since the height will be determined by the <see cref="ITextView"/>.
''' </remarks>
''' <exception cref="ObjectDisposedException">The margin Is disposed.</exception>
Public ReadOnly Property MarginSize() As Double Implements IWpfTextViewMargin.MarginSize
' Since this is a horizontal margin, its width will be bound to the width of the text view.
' Therefore, its size is its height.
Get
ThrowIfDisposed()
Return Me.ActualHeight
End Get
End Property
''' <summary>
''' Gets a value indicating whether the margin Is enabled.
''' </summary>
''' <exception cref="ObjectDisposedException">The margin Is disposed.</exception>
Public ReadOnly Property Enabled() As Boolean Implements IWpfTextViewMargin.Enabled
' The margin should always be enabled
Get
ThrowIfDisposed()
Return True
End Get
End Property
''' <summary>
''' Returns an instance of the margin if this is the margin that has been requested or null if no match is found
''' </summary>
''' <param name="marginName">The name of the margin requested</param>
''' <returns>An instance of SSMSAddin or null</returns>
Public Function GetTextViewMargin(ByVal marginName As String) As ITextViewMargin Implements IWpfTextViewMargin.GetTextViewMargin
Return If(String.Equals(marginName, SSMSAddin.MarginName, StringComparison.OrdinalIgnoreCase), Me, Nothing)
End Function
''' <summary>
''' Disposes an instance of <see cref="SSMSAddin"/> class.
''' </summary>
Public Sub Dispose() Implements IDisposable.Dispose
If Not Me.isDisposed Then
GC.SuppressFinalize(Me)
Me.isDisposed = True
End If
End Sub
#End Region
''' <summary>
''' Checks and throws <see cref="ObjectDisposedException"/> if the object is disposed.
''' </summary>
Private Sub ThrowIfDisposed()
If Me.isDisposed Then
Throw New ObjectDisposedException(MarginName)
End If
End Sub
End Class
+45
View File
@@ -0,0 +1,45 @@
''------------------------------------------------------------------------------
'' <copyright file="SSMSAddinFactory.vb" company="Company">
'' Copyright (c) Company. All rights reserved.
'' </copyright>
''------------------------------------------------------------------------------
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.Text.Editor
Imports Microsoft.VisualStudio.Utilities
''' <summary>
''' Export a <see cref="IWpfTextViewMarginProvider"/>, which returns an instance of the margin for the editor to use.
''' </summary>
<Export(GetType(IWpfTextViewMarginProvider))>
<Name(SSMSAddin.MarginName)>
<MarginContainer(PredefinedMarginNames.Top)>
<ContentType("sql")>
<TextViewRole(PredefinedTextViewRoles.Interactive)>
Friend NotInheritable Class SSMSAddinFactory
Implements IWpfTextViewMarginProvider
Public Sub New()
Dim a = 0
End Sub
#Region "IWpfTextViewMarginProvider"
''' <summary>
''' Creates an <see cref="IWpfTextViewMargin"/> for the given <see cref="IWpfTextViewHost"/>.
''' </summary>
''' <param name="wpfTextViewHost">The <see cref="IWpfTextViewHost"/> for which to create the <see cref="IWpfTextViewMargin"/>.</param>
''' <param name="marginContainer">The margin that will contain the newly-created margin.</param>
''' <returns>The <see cref="IWpfTextViewMargin"/>.
''' The value may be null if this <see cref="IWpfTextViewMarginProvider"/> does Not participate for this context.
''' </returns>
Public Function CreateMargin(ByVal wpfTextViewHost As IWpfTextViewHost, ByVal marginContainer As IWpfTextViewMargin) As IWpfTextViewMargin Implements IWpfTextViewMarginProvider.CreateMargin
Return New SSMSAddin(wpfTextViewHost.TextView)
End Function
#End Region
End Class
+119
View File
@@ -0,0 +1,119 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class SettingFormUI
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.TemplateScriptFolderTextBox = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.ExcelExportFolderTextBox = New System.Windows.Forms.TextBox()
Me.SaveButon = New System.Windows.Forms.Button()
Me.TSQLFormatVersion = New System.Windows.Forms.ComboBox()
Me.Label3 = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'TemplateScriptFolderTextBox
'
Me.TemplateScriptFolderTextBox.Location = New System.Drawing.Point(173, 9)
Me.TemplateScriptFolderTextBox.Name = "TemplateScriptFolderTextBox"
Me.TemplateScriptFolderTextBox.Size = New System.Drawing.Size(347, 20)
Me.TemplateScriptFolderTextBox.TabIndex = 0
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(12, 12)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(99, 13)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Templates directory"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(12, 35)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(108, 13)
Me.Label2.TabIndex = 1
Me.Label2.Text = "Excel export directory"
'
'ExcelExportFolderTextBox
'
Me.ExcelExportFolderTextBox.Location = New System.Drawing.Point(173, 32)
Me.ExcelExportFolderTextBox.Name = "ExcelExportFolderTextBox"
Me.ExcelExportFolderTextBox.Size = New System.Drawing.Size(347, 20)
Me.ExcelExportFolderTextBox.TabIndex = 0
'
'SaveButon
'
Me.SaveButon.Location = New System.Drawing.Point(15, 84)
Me.SaveButon.Name = "SaveButon"
Me.SaveButon.Size = New System.Drawing.Size(75, 23)
Me.SaveButon.TabIndex = 2
Me.SaveButon.Text = "Save"
Me.SaveButon.UseVisualStyleBackColor = True
'
'TSQLFormatVersion
'
Me.TSQLFormatVersion.FormattingEnabled = True
Me.TSQLFormatVersion.Items.AddRange(New Object() {"2008", "2012", "2014", "2016", "2017"})
Me.TSQLFormatVersion.Location = New System.Drawing.Point(173, 59)
Me.TSQLFormatVersion.Name = "TSQLFormatVersion"
Me.TSQLFormatVersion.Size = New System.Drawing.Size(127, 21)
Me.TSQLFormatVersion.TabIndex = 3
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(12, 59)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(107, 13)
Me.Label3.TabIndex = 1
Me.Label3.Text = "Format TSQL version"
'
'SettingFormUI
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(642, 282)
Me.Controls.Add(Me.TSQLFormatVersion)
Me.Controls.Add(Me.SaveButon)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.ExcelExportFolderTextBox)
Me.Controls.Add(Me.TemplateScriptFolderTextBox)
Me.Name = "SettingFormUI"
Me.Text = "SettingFormUI"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents TemplateScriptFolderTextBox As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents ExcelExportFolderTextBox As System.Windows.Forms.TextBox
Friend WithEvents SaveButon As System.Windows.Forms.Button
Friend WithEvents TSQLFormatVersion As System.Windows.Forms.ComboBox
Friend WithEvents Label3 As System.Windows.Forms.Label
End Class
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+20
View File
@@ -0,0 +1,20 @@
Public Class SettingFormUI
Public Sub New()
' This call is required by the designer.
InitializeComponent()
TemplateScriptFolderTextBox.Text = SettingManager.GetTemplatesFolder()
ExcelExportFolderTextBox.Text = SettingManager.GetExcelExportFolder()
TSQLFormatVersion.SelectedItem = SettingManager.GetTSQLFormatVersion
End Sub
Private Sub SaveButon_Click(sender As Object, e As System.EventArgs) Handles SaveButon.Click
SettingManager.SaveTemplatesFolder(TemplateScriptFolderTextBox.Text)
SettingManager.SaveExcelExportFolder(ExcelExportFolderTextBox.Text)
SettingManager.SaveTSQLFormatVersion(TSQLFormatVersion.SelectedItem)
End Sub
End Class
+122
View File
@@ -0,0 +1,122 @@
Imports System
Imports Microsoft.Win32
Namespace SettingManager
Module SettingManagerModule
Private Function GetRoot() As RegistryKey
Dim SettingKeyRoot As RegistryKey = Registry.CurrentUser.CreateSubKey("Addin.SSMS2017")
Dim testSettings As RegistryKey = SettingKeyRoot.CreateSubKey("Settings")
Return testSettings
End Function
Function GetTemplatesFolder() As String
Dim Folder As String = ""
Try
Dim RootKey = GetRoot()
Folder = RootKey.GetValue("ScriptTemplatesFolder").ToString
Catch ex As Exception
End Try
Return Folder
End Function
Function SaveTemplatesFolder(Folder As String) As Boolean
Try
Dim RootKey = GetRoot()
RootKey.SetValue("ScriptTemplatesFolder", Folder)
RootKey.Close()
Catch ex As Exception
Return False
End Try
Return True
End Function
Function GetExcelExportFolder() As String
Dim Folder As String = ""
Try
Dim RootKey = GetRoot()
Folder = RootKey.GetValue("ExcelExportFolder").ToString
Catch ex As Exception
End Try
Return Folder
End Function
Function SaveExcelExportFolder(Folder As String) As Boolean
Try
Dim RootKey = GetRoot()
RootKey.SetValue("ExcelExportFolder", Folder)
RootKey.Close()
Catch ex As Exception
Return False
End Try
Return True
End Function
Function GetTSQLFormatVersion() As String
Dim Folder As String = ""
Try
Dim RootKey = GetRoot()
Folder = RootKey.GetValue("TSQLFormatVersion").ToString.Trim()
Catch ex As Exception
End Try
Return Folder
End Function
Function SaveTSQLFormatVersion(Value As String) As Boolean
Try
Dim RootKey = GetRoot()
RootKey.SetValue("TSQLFormatVersion", Value)
RootKey.Close()
Catch ex As Exception
Return False
End Try
Return True
End Function
End Module
End Namespace
+140
View File
@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
VS SDK Notes: This resx file contains the resources that will be consumed from your package by Visual Studio.
For example, Visual Studio will attempt to load resource '400' from this resource stream when it needs to
load your package's icon. Because Visual Studio will always look in the VSPackage.resources stream first for
resources it needs, you should put additional resources that Visual Studio will load directly into this resx
file.
Resources that you would like to access directly from your package in a strong-typed fashion should be stored
in Resources.resx or another resx file.
-->
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="110" xml:space="preserve">
<value>SettingsUI Extension</value>
</data>
<data name="112" xml:space="preserve">
<value>SettingsUI Visual Studio Extension Detailed Info</value>
</data>
<data name="400" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\SettingsUIPackage.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.VisualStudio.CoreUtility" version="14.3.25407" targetFramework="net461" />
<package id="Microsoft.VisualStudio.Text.Data" version="14.3.25407" targetFramework="net461" />
<package id="Microsoft.VisualStudio.Text.Logic" version="14.3.25407" targetFramework="net461" />
<package id="Microsoft.VisualStudio.Text.UI" version="14.3.25407" targetFramework="net461" />
<package id="Microsoft.VisualStudio.Text.UI.Wpf" version="14.3.25407" targetFramework="net461" />
<package id="Microsoft.VSSDK.BuildTools" version="14.3.25407" targetFramework="net461" developmentDependency="true" />
</packages>
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="VSIXProject1.Alex Bochkov.108c3c72-0039-4fe2-a49f-384fad4682cb" Version="1.0" Language="en-US" Publisher="Alex Bochkov" />
<DisplayName>VSIXProject1</DisplayName>
<Description>Empty VSIX Project.</Description>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[14.0]" />
<InstallationTarget Version="[14.0,16.0)" Id="Microsoft.VisualStudio.IntegratedShell" />
</Installation>
<Dependencies>
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.5,)" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%|" />
</Assets>
</PackageManifest>
+129
View File
@@ -0,0 +1,129 @@
body {
margin: 0;
padding: 0;
border: 0;
color: #1E1E1E;
font-size: 13px;
font-family: "Segoe UI", Helvetica, Arial, sans-serif;
line-height: 1.45;
word-wrap: break-word;
}
/* General & 'Reset' Stuff */
.container {
width: 980px;
margin: 0 auto;
}
section {
display: block;
margin: 0;
}
h1, h2, h3, h4, h5, h6 {
margin: 0;
}
/* Header, <header>
header - container
h1 - project name
h2 - project description
*/
#header {
color: #FFF;
background: #68217a;
position:relative;
}
#hangcloud {
width: 190px;
height: 160px;
background: url("../images/bannerart03.png");
position: absolute;
top: 0;
right: -30px;
}
h1, h2 {
font-family: "Segoe UI Light", "Segoe UI", Helvetica, Arial, sans-serif;
line-height: 1;
margin: 0 18px;
padding: 0;
}
#header h1 {
font-size: 3.4em;
padding-top: 18px;
font-weight: normal;
margin-left: 15px;
}
#header h2 {
font-size: 1.5em;
margin-top: 10px;
padding-bottom: 18px;
font-weight: normal;
}
#main_content {
width: 100%;
display: flex;
flex-direction: row;
}
h1, h2, h3, h4, h5, h6 {
font-weight: bolder;
}
#main_content h1 {
font-size: 1.8em;
margin-top: 34px;
}
#main_content h1:first-child {
margin-top: 30px;
}
#main_content h2 {
font-size: 1.4em;
font-weight: bold;
}
p, ul {
margin: 11px 18px;
}
#main_content a {
color: #06C;
text-decoration: none;
}
ul {
margin-top: 13px;
margin-left: 18px;
padding-left: 0;
}
ul li {
margin-left: 18px;
padding-left: 0;
}
#lpanel {
width: 620px;
float: left;
}
#rpanel ul {
list-style-type: none;
width: 300px;
}
#rpanel ul li {
line-height: 1.8em;
}
#rpanel {
background: #e7e7e7;
width: 360px;
float: right;
}
#rpanel div {
width: 300px;
}