/// <summary> /// Saves settings to XML (on settings export) /// </summary> public override void SaveSettingsToXml(IVsSettingsWriter writer) { WriteBoolToXml(writer, "ShowFilterContext", SettingsObject.Instance.ShowContextColumn); WriteBoolToXml(writer, "UseReflectionInAsp", SettingsObject.Instance.UseReflectionInAsp); WriteIntToXml(writer, "MarkNotLocalizableStringsIndex", SettingsObject.Instance.MarkNotLocalizableStringsIndex); WriteIntToXml(writer, "NamespacePolicyIndex", SettingsObject.Instance.NamespacePolicyIndex); WriteIntToXml(writer, "BatchMoveSplitterDistance", SettingsObject.Instance.BatchMoveSplitterDistance); WriteIntToXml(writer, "SelectedKeyIndex", SettingsObject.Instance.SelectedKeyIndex); WriteBoolToXml(writer, "SelectedUseFullName", SettingsObject.Instance.SelectedUseFullName); if (SettingsObject.Instance.SelectedResourceFilePath != null) { writer.WriteSettingString("SelectedResourceFilePath", SettingsObject.Instance.SelectedResourceFilePath); } foreach (var pair in SettingsObject.Instance.CommonLocalizabilityCriteria) { LocalizationCommonCriterion crit = pair.Value; writer.WriteSettingString(crit.Name, crit.ToRegData()); } WriteIntToXml(writer, "CustomCriteriaCount", SettingsObject.Instance.CustomLocalizabilityCriteria.Count); for (int i = 0; i < SettingsObject.Instance.CustomLocalizabilityCriteria.Count; i++) { int hr = writer.WriteSettingString("CustomCriteria" + i, SettingsObject.Instance.CustomLocalizabilityCriteria[i].ToRegData()); if (hr != VSConstants.S_OK) { writer.ReportError("CustomCriteria value cannot be written", (uint)__VSSETTINGSERRORTYPES.vsSettingsErrorTypeError); } } }
/// <summary> /// Saves settings to registry storage /// </summary> public override void SaveSettingsToStorage() { VisualLocalizerPackage package = VisualLocalizerPackage.Instance; RegistryKey rootKey = package.UserRegistryRoot; RegistryKey settingsKey = null; try { settingsKey = rootKey.CreateSubKey(REG_KEY); RegistryKey filterKey = settingsKey.CreateSubKey(FILTER_KEY); WriteBoolToRegKey(filterKey, "ShowFilterContext", SettingsObject.Instance.ShowContextColumn); WriteBoolToRegKey(filterKey, "UseReflectionInAsp", SettingsObject.Instance.UseReflectionInAsp); WriteIntToRegKey(filterKey, "NamespacePolicyIndex", SettingsObject.Instance.NamespacePolicyIndex); WriteIntToRegKey(filterKey, "MarkNotLocalizableStringsIndex", SettingsObject.Instance.MarkNotLocalizableStringsIndex); WriteIntToRegKey(filterKey, "BatchMoveSplitterDistance", SettingsObject.Instance.BatchMoveSplitterDistance); WriteIntToRegKey(filterKey, "SelectedKeyIndex", SettingsObject.Instance.SelectedKeyIndex); WriteBoolToRegKey(filterKey, "SelectedUseFullName", SettingsObject.Instance.SelectedUseFullName); if (SettingsObject.Instance.SelectedResourceFilePath != null) { filterKey.SetValue("SelectedResourceFilePath", SettingsObject.Instance.SelectedResourceFilePath); } foreach (var pair in SettingsObject.Instance.CommonLocalizabilityCriteria) { LocalizationCommonCriterion crit = pair.Value; filterKey.SetValue(crit.Name, crit.ToRegData()); } int count = ReadIntFromRegKey(filterKey, "CustomCriteriaCount"); for (int i = 0; i < count; i++) { filterKey.DeleteValue("CustomCriteria" + i, false); } for (int i = 0; i < SettingsObject.Instance.CustomLocalizabilityCriteria.Count; i++) { filterKey.SetValue("CustomCriteria" + i, SettingsObject.Instance.CustomLocalizabilityCriteria[i].ToRegData()); } WriteIntToRegKey(filterKey, "CustomCriteriaCount", SettingsObject.Instance.CustomLocalizabilityCriteria.Count); } finally { if (settingsKey != null) { settingsKey.Close(); } } }