//------------ Load User Shortcuts -------------- public void ExecuteImportShortcuts() { // Let user browse for a .vssettings file to import. Default to the last file saved. string chosenFile = BrowseForVsSettingsFile(); if (chosenFile == null || !File.Exists(chosenFile)) { // No file chosen. Possibly Cancel or ESC pressed. return; } if (!(Path.GetExtension(chosenFile).Equals(".vssettings", StringComparison.InvariantCultureIgnoreCase) || Path.GetExtension(chosenFile).Equals(".xml", StringComparison.InvariantCultureIgnoreCase))) { MessageBox.Show($"The chosen file is not a valid Visual Studio settings file.\n\nPlease chose a 'vssettings' file or 'xml' file.", MSG_CAPTION_IMPORT); return; } XDocument vsSettingsFile = XDocument.Load(chosenFile); var shortcutList = ParseVSSettingsFile(vsSettingsFile); var window = new ImportShortcuts(shortcutList); window.ShowModal(); if (!window.isCancelled) { var removeList = window.GetUncheckedShortcuts(); var newFile = UpdateAndSaveNewSettingsFile(vsSettingsFile, removeList); LoadKeyboardShortcutsFromVSSettingsFile(newFile); try { File.Delete(newFile); } catch (Exception e) { System.Diagnostics.Debug.WriteLine("Unable to delete temporary settings file: {0}", e.ToString()); } AddUserShortcutsFileToRegistry(chosenFile); } }
public bool PerformImportUserShortcuts(string chosenFile, XDocument vsSettingsXDoc, ImportShortcuts window) { // Create a temporary file to import, without shortcuts that the user unchecked List <VSShortcut> listOfShortcutsToRemove = window.GetUncheckedShortcuts(); var tempImportFile = CreateSettingsFile(vsSettingsXDoc, listOfShortcutsToRemove); try { // Perform the import if (!LoadKeyboardShortcutsFromVSSettingsFile(tempImportFile)) { return(false); } // Save the file in the "Load" list so it can be imported again. AddUserShortcutsFileToRegistry(chosenFile); return(true); } finally { // Cleanup - Delete the temporary file. DeleteFileSafely(tempImportFile); } }