Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Initial support for loading/saving options in the design-time components. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | designOptions |
Files: | files | file ages | folders |
SHA1: |
b26261e0900273bb0c8e3fdd3dfb38cf |
User & Date: | mistachkin 2014-08-01 03:12:37.492 |
Context
2014-08-01
| ||
03:30 | Revise method names introduced in the previous check-in. Call the SQLiteOptions class from all the appropriate places. check-in: 015eca543d user: mistachkin tags: designOptions | |
03:12 | Initial support for loading/saving options in the design-time components. check-in: b26261e090 user: mistachkin tags: designOptions | |
2014-07-31
| ||
22:36 | Update Entity Framework in externals to the 6.1.1 release. check-in: d41090f6e0 user: mistachkin tags: trunk | |
Changes
Changes to SQLite.Designer/Editors/ViewDesignerDoc.cs.
︙ | ︙ | |||
73 74 75 76 77 78 79 80 81 82 83 84 85 86 | try { _typeQB = SQLiteDataAdapterToolboxItem._vsdesigner.GetType("Microsoft.VSDesigner.Data.Design.QueryBuilderControl"); if (_typeQB != null) { _queryDesigner = Activator.CreateInstance(_typeQB) as UserControl; _typeQB.InvokeMember("Provider", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.NonPublic, null, _queryDesigner, new object[] { "System.Data.SQLite" }); _typeQB.InvokeMember("ConnectionString", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.NonPublic, null, _queryDesigner, new object[] { _connection.ConnectionSupport.ConnectionString }); _typeQB.InvokeMember("EnableMorphing", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.NonPublic, null, _queryDesigner, new object[] { false }); Controls.Add(_queryDesigner); _queryDesigner.Dock = DockStyle.Fill; _queryDesigner.Visible = true; } | > | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | try { _typeQB = SQLiteDataAdapterToolboxItem._vsdesigner.GetType("Microsoft.VSDesigner.Data.Design.QueryBuilderControl"); if (_typeQB != null) { _queryDesigner = Activator.CreateInstance(_typeQB) as UserControl; // TODO: Fix me. _typeQB.InvokeMember("Provider", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.NonPublic, null, _queryDesigner, new object[] { "System.Data.SQLite" }); _typeQB.InvokeMember("ConnectionString", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.NonPublic, null, _queryDesigner, new object[] { _connection.ConnectionSupport.ConnectionString }); _typeQB.InvokeMember("EnableMorphing", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.NonPublic, null, _queryDesigner, new object[] { false }); Controls.Add(_queryDesigner); _queryDesigner.Dock = DockStyle.Fill; _queryDesigner.Visible = true; } |
︙ | ︙ |
Changes to SQLite.Designer/SQLite.Designer.2005.csproj.
︙ | ︙ | |||
131 132 133 134 135 136 137 138 139 140 141 142 143 144 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> | > | 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLiteOptions.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> |
︙ | ︙ |
Changes to SQLite.Designer/SQLite.Designer.2008.csproj.
︙ | ︙ | |||
136 137 138 139 140 141 142 143 144 145 146 147 148 149 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> | > | 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLiteOptions.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> |
︙ | ︙ |
Changes to SQLite.Designer/SQLite.Designer.2010.csproj.
︙ | ︙ | |||
136 137 138 139 140 141 142 143 144 145 146 147 148 149 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> | > | 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLiteOptions.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> |
︙ | ︙ |
Changes to SQLite.Designer/SQLite.Designer.2012.csproj.
︙ | ︙ | |||
142 143 144 145 146 147 148 149 150 151 152 153 154 155 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> | > | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLiteOptions.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> |
︙ | ︙ |
Changes to SQLite.Designer/SQLite.Designer.2013.csproj.
︙ | ︙ | |||
142 143 144 145 146 147 148 149 150 151 152 153 154 155 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> | > | 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | </Compile> <Compile Include="SQLiteDataAdapterToolboxItem.cs" /> <Compile Include="SQLiteDataConnectionSupport.cs" /> <Compile Include="SQLiteDataObjectIdentifierResolver.cs" /> <Compile Include="SQLiteDataObjectSupport.cs" /> <Compile Include="SQLiteDataSourceInformation.cs" /> <Compile Include="SQLiteDataViewSupport.cs" /> <Compile Include="SQLiteOptions.cs" /> <Compile Include="SQLitePackage.cs" /> <Compile Include="SQLiteProviderObjectFactory.cs" /> <Compile Include="TableNameDialog.cs"> <SubType>Form</SubType> </Compile> <Compile Include="TableNameDialog.Designer.cs"> <DependentUpon>TableNameDialog.cs</DependentUpon> |
︙ | ︙ |
Changes to SQLite.Designer/SQLiteConnectionProperties.cs.
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 | { public SQLiteConnectionProperties() : this(null) { } public SQLiteConnectionProperties(string connectionString) : base("System.Data.SQLite", connectionString) { } public override string[] GetBasicProperties() { return new string[] { "data source" }; | > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | { public SQLiteConnectionProperties() : this(null) { } public SQLiteConnectionProperties(string connectionString) // TODO: Fix me. : base("System.Data.SQLite", connectionString) { } public override string[] GetBasicProperties() { return new string[] { "data source" }; |
︙ | ︙ |
Changes to SQLite.Designer/SQLiteConnectionStringEditor.cs.
︙ | ︙ | |||
100 101 102 103 104 105 106 107 108 109 110 111 112 113 | string connectionName; for (int n = 0; n < items; n++) { connectionString = (string)_managerType.InvokeMember("GetConnectionString", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, manager, new object[] { n }); connectionName = (string)_managerType.InvokeMember("GetConnectionName", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, manager, new object[] { n }); dataProvider = (string)_managerType.InvokeMember("GetProvider", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, manager, new object[] { n }); if (String.Compare(dataProvider, "System.Data.SQLite", StringComparison.OrdinalIgnoreCase) == 0) { node = selector.AddNode(connectionName, connectionString, null); if (String.Compare(connectionString, connection.ConnectionString, StringComparison.OrdinalIgnoreCase) == 0) selector.SelectedNode = node; } | > | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | string connectionName; for (int n = 0; n < items; n++) { connectionString = (string)_managerType.InvokeMember("GetConnectionString", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, manager, new object[] { n }); connectionName = (string)_managerType.InvokeMember("GetConnectionName", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, manager, new object[] { n }); dataProvider = (string)_managerType.InvokeMember("GetProvider", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, manager, new object[] { n }); // TODO: Fix me. if (String.Compare(dataProvider, "System.Data.SQLite", StringComparison.OrdinalIgnoreCase) == 0) { node = selector.AddNode(connectionName, connectionString, null); if (String.Compare(connectionString, connection.ConnectionString, StringComparison.OrdinalIgnoreCase) == 0) selector.SelectedNode = node; } |
︙ | ︙ |
Changes to SQLite.Designer/SQLiteDataAdapterToolboxItem.cs.
︙ | ︙ | |||
59 60 61 62 63 64 65 66 67 68 69 70 71 72 | /// <summary> /// Creates the necessary components associated with this data adapter instance /// </summary> /// <param name="host">The designer host</param> /// <returns>The components created by this toolbox item</returns> protected override IComponent[] CreateComponentsCore(IDesignerHost host) { DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); DbDataAdapter dataAdapter = fact.CreateDataAdapter(); IContainer container = host.Container; using (DbCommand adapterCommand = fact.CreateCommand()) { | > | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | /// <summary> /// Creates the necessary components associated with this data adapter instance /// </summary> /// <param name="host">The designer host</param> /// <returns>The components created by this toolbox item</returns> protected override IComponent[] CreateComponentsCore(IDesignerHost host) { // TODO: Fix me. DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite"); DbDataAdapter dataAdapter = fact.CreateDataAdapter(); IContainer container = host.Container; using (DbCommand adapterCommand = fact.CreateCommand()) { |
︙ | ︙ |
Changes to SQLite.Designer/SQLiteDataConnectionSupport.cs.
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 | internal sealed class SQLiteDataConnectionSupport : AdoDotNetConnectionSupport { private SQLiteDataViewSupport _dataViewSupport; private SQLiteDataObjectSupport _dataObjectSupport; private SQLiteDataObjectIdentifierResolver _dataObjectIdentifierResolver; public SQLiteDataConnectionSupport() : base("System.Data.SQLite") { } protected override DataSourceInformation CreateDataSourceInformation() { return new SQLiteDataSourceInformation(Site as DataConnection); | > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | internal sealed class SQLiteDataConnectionSupport : AdoDotNetConnectionSupport { private SQLiteDataViewSupport _dataViewSupport; private SQLiteDataObjectSupport _dataObjectSupport; private SQLiteDataObjectIdentifierResolver _dataObjectIdentifierResolver; public SQLiteDataConnectionSupport() // TODO: Fix me. : base("System.Data.SQLite") { } protected override DataSourceInformation CreateDataSourceInformation() { return new SQLiteDataSourceInformation(Site as DataConnection); |
︙ | ︙ |
Added SQLite.Designer/SQLiteOptions.cs.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Joe Mistachkin (joe@mistachkin.com) * * Released to the public domain, use at your own risk! ********************************************************/ using System; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using Microsoft.VisualStudio.Shell; namespace SQLite.Designer { /// <summary> /// This class keeps track of the options configured on a per-solution file /// basis pertaining to the System.Data.SQLite design-time components. /// </summary> [Guid("5cf5656c-ccbe-4162-8780-0cbee936b90c")] internal static class SQLiteOptions { #region Private Constants /// <summary> /// This is the name of the setting containing the configured ADO.NET /// provider name. /// </summary> private static readonly string ProviderNameKey = "ProviderName"; /////////////////////////////////////////////////////////////////////// /// <summary> /// This is the legacy provider name used by the System.Data.SQLite /// design-time components. It is also the default value for the /// associated option. /// </summary> private static readonly string DefaultProviderName = "System.Data.SQLite"; /// <summary> /// This is the provider name used when Entity Framework 6.x support is /// required for use with the System.Data.SQLite design-time components. /// </summary> private static readonly string Ef6ProviderName = "System.Data.SQLite.EF6"; #endregion /////////////////////////////////////////////////////////////////////// #region Private Static Data /// <summary> /// This is used to synchronize access to the static dictionary of /// options (just below). /// </summary> private static readonly object syncRoot = new object(); /// <summary> /// This dictionary contains the key/value pairs representing the /// per-solution options configured for the current solution. /// </summary> private static Dictionary<string, string> options; #endregion /////////////////////////////////////////////////////////////////////// #region Private Static Methods /// <summary> /// This method initializes (or resets) the per-solution configuration /// options. /// </summary> /// <param name="reset"> /// Non-zero to reset the options if they are already initialized. /// When this method is called from the <see cref="SQLitePackage" /> /// constructor, this value should always be true. /// </param> private static void Initialize( bool reset ) { lock (syncRoot) { if (options != null) options.Clear(); else options = new Dictionary<string, string>(); options[ProviderNameKey] = DefaultProviderName; } } #endregion /////////////////////////////////////////////////////////////////////// #region Public Static Methods #region Hard-Coded Default Value Handling /// <summary> /// This method determines if the specified key/value pair represents /// the default value for that option. /// </summary> /// <param name="key"> /// The name ("key") of the configuration option. /// </param> /// <param name="value"> /// The value of the configuration option. /// </param> /// <returns> /// Non-zero if the key/value pair represents its default value. /// </returns> public static bool IsDefaultValue( string key, string value ) { if (String.Equals( key, ProviderNameKey, StringComparison.Ordinal) && String.Equals( value, DefaultProviderName, StringComparison.Ordinal)) { return true; } return false; } /////////////////////////////////////////////////////////////////////// /// <summary> /// This method determines if the specified key/value pair is valid /// and supported by this class. /// </summary> /// <param name="key"> /// The name ("key") of the configuration option. /// </param> /// <param name="value"> /// The value of the configuration option. /// </param> /// <returns> /// Non-zero if the key/value pair represents a valid option key and /// value supported by this class. /// </returns> public static bool IsValidValue( string key, string value ) { if (String.Equals( key, ProviderNameKey, StringComparison.Ordinal) && (String.Equals( value, DefaultProviderName, StringComparison.Ordinal) || String.Equals( value, Ef6ProviderName, StringComparison.Ordinal))) { return true; } return false; } #endregion /////////////////////////////////////////////////////////////////////// #region Core Option Handling /// <summary> /// This method returns the current list of option keys supported by /// the System.Data.SQLite design-time components. /// </summary> /// <returns> /// An <see cref="IEnumerable{T}" /> of strings containing the list of /// option keys supported by the System.Data.SQLite design-time /// components -OR- null in the event of any failure. /// </returns> public static IEnumerable<string> GetOptionKeys( bool reset ) { lock (syncRoot) /* TRANSACTIONAL */ { Initialize(reset); return (options != null) ? new List<string>(options.Keys) : null; } } /////////////////////////////////////////////////////////////////////// /// <summary> /// This method determines if the specified option key is supported by /// this class. /// </summary> /// <param name="key"> /// The name ("key") of the configuration option. /// </param> /// <returns> /// Non-zero if the specified option key is supported by this class. /// </returns> public static bool HaveOptionKey( string key ) { lock (syncRoot) { if ((key == null) || (options == null)) return false; return options.ContainsKey(key); } } /////////////////////////////////////////////////////////////////////// /// <summary> /// This method attempts to query and return the current value of the /// specified option key. /// </summary> /// <param name="key"> /// The name ("key") of the configuration option. /// </param> /// <param name="value"> /// Upon success, the current value for the configuration option; /// otherwise, null. /// </param> /// <returns> /// Non-zero for success; otherwise, zero. /// </returns> public static bool GetOptionValue( string key, out string value ) { lock (syncRoot) { value = null; if ((key == null) || (options == null)) return false; if (options.TryGetValue(key, out value)) return true; return false; } } /////////////////////////////////////////////////////////////////////// /// <summary> /// This method attempts to set the value of the specified option key. /// </summary> /// <param name="key"> /// The name ("key") of the configuration option. /// </param> /// <param name="value"> /// The new value for the configuration option. /// </param> /// <returns> /// Non-zero for success; otherwise, zero. /// </returns> public static bool SetOptionValue( string key, string value ) { lock (syncRoot) { if ((key == null) || (options == null)) return false; options[key] = value; return true; } } #endregion /////////////////////////////////////////////////////////////////////// #region Stream Handling /// <summary> /// This method attempts to read an option value from the specified /// stream. The stream must be readable. After this method returns, /// the stream may no longer be usable. /// </summary> /// <param name="stream"> /// The stream to read the option value from. /// </param> /// <param name="value"> /// Upon success, the read value for the configuration option; /// otherwise, null. /// </param> /// <returns> /// Non-zero for success; otherwise, zero. /// </returns> public static bool ReadValue( Stream stream, out string value ) { value = null; if ((stream == null) || !stream.CanRead) return false; try { using (StreamReader streamReader = new StreamReader(stream)) { value = streamReader.ReadToEnd(); return true; } } catch (Exception) { // do nothing. } return false; } /////////////////////////////////////////////////////////////////////// /// <summary> /// This method attempts to write an option value to the specified /// stream. The stream must be writable. After this method returns, /// the stream may no longer be usable. /// </summary> /// <param name="stream"> /// The stream to write the option value to. /// </param> /// <param name="value"> /// The option value to be written. This value may be null. /// </param> /// <returns> /// Non-zero for success; otherwise, zero. /// </returns> public static bool WriteValue( Stream stream, string value ) { if ((stream == null) || !stream.CanWrite) return false; try { using (StreamWriter streamWriter = new StreamWriter(stream)) { streamWriter.Write(value); return true; } } catch (Exception) { // do nothing. } return false; } #endregion #endregion } } |
Changes to SQLite.Designer/SQLitePackage.cs.
1 2 3 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | /******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ namespace SQLite.Designer { using System; using System.Collections.Generic; using System.IO; using Microsoft.VisualStudio.Shell; using System.Runtime.InteropServices; using System.ComponentModel.Design; using Microsoft.VisualStudio.Shell.Interop; /// <summary> /// Ideally we'd be a package provider, but the VS Express Editions don't support us, so this class /// exists so that in the future we can perhaps work with the Express Editions. /// </summary> [Guid("DCBE6C8D-0E57-4099-A183-98FF74C64D9C")] internal sealed class SQLitePackage : Package { public SQLitePackage() { IEnumerable<string> keys = SQLiteOptions.GetOptionKeys(true); if (keys != null) { foreach (string key in keys) { if (key == null) continue; AddOptionKey(key); } } } protected override void Initialize() { IServiceContainer sc = (IServiceContainer)this; sc.AddService(typeof(SQLiteProviderObjectFactory), new ServiceCreatorCallback(CreateService), true); ToolboxInitialized += new EventHandler(SQLitePackage_ToolboxInitialized); ToolboxUpgraded += new EventHandler(SQLitePackage_ToolboxUpgraded); base.Initialize(); } protected override void OnLoadOptions(string key, Stream stream) { if (SQLiteOptions.HaveOptionKey(key)) { string value; if (SQLiteOptions.ReadValue(stream, out value) && SQLiteOptions.IsValidValue(key, value)) { SQLiteOptions.SetOptionValue(key, value); } return; } base.OnLoadOptions(key, stream); } protected override void OnSaveOptions(string key, Stream stream) { if (SQLiteOptions.HaveOptionKey(key)) { string value; if (SQLiteOptions.GetOptionValue(key, out value) && SQLiteOptions.IsValidValue(key, value) && !SQLiteOptions.IsDefaultValue(key, value)) { SQLiteOptions.WriteValue(stream, value); } return; } base.OnSaveOptions(key, stream); } void SQLitePackage_ToolboxUpgraded(object sender, EventArgs e) { IVsToolbox vstbx = GetService(typeof(SVsToolbox)) as IVsToolbox; vstbx.RemoveTab("SQLite"); |
︙ | ︙ |