/// <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(); } } }
/// <summary> /// Loads settings from registry storage (on package load) /// </summary> public override void LoadSettingsFromStorage() { VisualLocalizerPackage package = VisualLocalizerPackage.Instance; RegistryKey rootKey = package.UserRegistryRoot; RegistryKey settingsKey = null; try { settingsKey = rootKey.OpenSubKey(REG_KEY, false); if (settingsKey != null) { RegistryKey filtersKey = settingsKey.OpenSubKey(FILTER_KEY); if (filtersKey != null) { SettingsObject.Instance.IgnorePropertyChanges = true; SettingsObject.Instance.ShowContextColumn = ReadBoolFromRegKey(filtersKey, "ShowFilterContext"); SettingsObject.Instance.UseReflectionInAsp = ReadBoolFromRegKey(filtersKey, "UseReflectionInAsp"); SettingsObject.Instance.NamespacePolicyIndex = ReadIntFromRegKey(filtersKey, "NamespacePolicyIndex"); SettingsObject.Instance.MarkNotLocalizableStringsIndex = ReadIntFromRegKey(filtersKey, "MarkNotLocalizableStringsIndex"); SettingsObject.Instance.BatchMoveSplitterDistance = ReadIntFromRegKey(filtersKey, "BatchMoveSplitterDistance", 110); SettingsObject.Instance.SelectedKeyIndex = ReadIntFromRegKey(filtersKey, "SelectedKeyIndex", 0); SettingsObject.Instance.SelectedUseFullName = ReadBoolFromRegKey(filtersKey, "SelectedUseFullName"); SettingsObject.Instance.SelectedResourceFilePath = (string)filtersKey.GetValue("SelectedResourceFilePath", null); foreach (var pair in SettingsObject.Instance.CommonLocalizabilityCriteria) { LocalizationCommonCriterion crit = pair.Value; object val = filtersKey.GetValue(crit.Name); if (val != null) { crit.FromRegData(val.ToString()); } } SettingsObject.Instance.CustomLocalizabilityCriteria.Clear(); int customCriteriaCount = ReadIntFromRegKey(filtersKey, "CustomCriteriaCount", 0); for (int i = 0; i < customCriteriaCount; i++) { object val = filtersKey.GetValue("CustomCriteria" + i); if (val != null) { LocalizationCustomCriterion crit = new LocalizationCustomCriterion(LocalizationCriterionAction.VALUE, 0); crit.FromRegData(val.ToString()); SettingsObject.Instance.CustomLocalizabilityCriteria.Add(crit); } } } else { ResetSettings(); } } else { ResetSettings(); } } finally { if (settingsKey != null) { settingsKey.Close(); } SettingsObject.Instance.IgnorePropertyChanges = false; SettingsObject.Instance.NotifySettingsLoaded(); } }